国产成人AV无码一二三区,少女1到100集,国产精品久久久久精品综合紧,巜公妇之诱感肉欲HD在线播放

文章 > PHP教程 > php信号量和共享内存分别是什么

php信号量和共享内存分别是什么

php信号量 共享内存

头像

小妮浅浅

2021-08-19 09:59:235013浏览 · 0收藏 · 0评论

说明

1、信号量:是系统提供的一种原子操作,一个信号数量,同时只有一个进程能操作。

一个过程获得一个信号,必须被过程释放。

2、共享内存:是系统在存储器中打开的一个公共存储器区域,任何一个过程都可以访问。

在同一时刻,可以有多个过程访问该区域,为了保证数据的一致性,需要对该存储器区域进行锁定或信号。

实例

echo "parent progress pid:{$parentPid}\n";
$childList = array();
 
// 创建共享内存,创建信号量,定义共享key
$shm_id = ftok(__FILE__,'m');
$sem_id = ftok(__FILE__,'s');
$shareMemory = shm_attach($shm_id);
$signal = sem_get($sem_id);
const SHARE_KEY = 1;
// 生产者
function producer(){
    global $shareMemory;
    global $signal;
    $pid = posix_getpid();
    $repeatNum = 5;
    for ( $i = 1; $i <= $repeatNum; $i++) {
        // 获得信号量
        sem_acquire($signal);
        
        if (shm_has_var($shareMemory,SHARE_KEY)){
            // 有值,加一
            $count = shm_get_var($shareMemory,SHARE_KEY);
            $count ++;
            shm_put_var($shareMemory,SHARE_KEY,$count);
            echo "({$pid}) count: {$count}\n";
        }else{
            // 无值,初始化
            shm_put_var($shareMemory,SHARE_KEY,0);
            echo "({$pid}) count: 0\n";
        }
        // 用完释放
        sem_release($signal);
        
        $rand = rand(1,3);
        sleep($rand);
    }
}
function createProgress($callback){
    $pid = pcntl_fork();
    if ( $pid == -1) {
        // 创建失败
        exit("fork progress error!\n");
    } else if ($pid == 0) {
        // 子进程执行程序
        $pid = posix_getpid();
        $callback();
        exit("({$pid})child progress end!\n");
    }else{
        // 父进程执行程序
        return $pid;
    }
}
// 3个写进程
for ($i = 0; $i < 3; $i ++ ) {
    $pid = createProgress('producer');
    $childList[$pid] = 1;
    echo "create producer child progress: {$pid} \n";
}
// 等待所有子进程结束
while(!empty($childList)){
    $childPid = pcntl_wait($status);
    if ($childPid > 0){
        unset($childList[$childPid]);
    }
}
// 释放共享内存与信号量
shm_remove($shareMemory);
sem_remove($signal);
echo "({$parentPid})main progress end!\n";

以上就是php信号量和共享内存的介绍,希望对大家有所帮助。更多php学习指路:php教程

推荐操作系统:windows7系统、PHP5.6、DELL G3电脑

关注

关注公众号,随时随地在线学习

本教程部分素材来源于网络,版权问题联系站长!

9853| 停电后我和公做了爱 | 你们日的时候都说什么| 电影《轮番上阵》| 法国《监狱伦理3》| 妈妈说今晚爸爸不回家| 办公室刺激战场3| 兄弟的母亲中字ID| 美国伦理〈欲奴3)| 公媳欢情沈曼最新章节更新 | 国产在线观看免费全集电视剧网站 | 老公太长了每次都扎的肚子疼| 老公让我把B扒开他日| 头像女下半部位视频大全| 坤坤寒入桃子里电视剧| 年轻的女学生| 《落魄贵族当女仆》樱花动漫| 妈妈你真棒里面的插曲叫什么| 国产在线观看免费全集电视剧网站 | 《慈母夜吟》完整版| 妈妈总是晚上装睡配合孩子| 老师没戴套子C了我一天视频| 主动把乳头放进男朋友嘴巴里| 《疯狂72小时》韩剧| 胸大美女| 爱的精灵| CSGO未满十八岁能玩多久| 《厨房激战5》完整版在线观看| 性别饥饿妈妈| 线人2009| 人狗大战2免费观看正版| 99久久国产精品久久99| 小婕子伦流澡到高潮H动漫| 打扑克视频| 1688黄桃网站进入页面| 《互换人妻HD中字》| 潮湿的体温2| 美女比基尼游泳图片视频 | 《部长你别这样》大结局| 宝~才三根手指就不行啦| 解开乳置喂领导吃奶