亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 邏輯算法 > 正文

PHP 進程池與輪詢調度算法實現多任務

2020-03-22 16:22:30
字體:
來源:轉載
供稿:網友
phper 請了解進程調度策略,CPU 時間片,進程控制【創建,銷毀,回收,進程信號】與及進程運行流程和基本的進程組,信號中斷原理,以及進程之間的關系。

進程的通信:

匿名管道,命名管道,消息隊列,內存共享,socketpair 請自行擼代碼測試哦

進程的調度算法:

輪詢,隨機分發,計分板等策略或是搞個優先極或是隊列,或是堆棧等基本的算法【自己去發揮哦】

進程池:

擼過 tcp 的話應該知道要能處理多個客戶端,就得用 IO 復用技術【事件多路分發器】或是多進程以及多線程,每來一個客戶端就 fork 一個進程或是線程,那樣的話上下文切換成本特別高,所以咱們先創建好一組進程【進程池】,等客戶端連接上來的時候,通過某種算法【我們用的輪詢】來選擇某個進程投遞任務來干活,這樣的話就不用創建又銷毀來回折騰了,提升它的效率。

下面是 PHP 代碼版本的實現

<?php/** * Created by PhpStorm. * User: 1655664358@qq.com * Date: 2019/1/12 * Time: 16:18 */$flag = 1;html' target='_blank'>class process{    public $pid;    public $name;    public $file;    public $num;}class instance{    public $processIdx;    public $proc = [];    public $processNum;}function sigHandler($sigNo){    global $flag;    $flag = 0;    echo "信號中斷處理".PHP_EOL;}function processPool(instance &$instance,$num){    if (!$instance||$num==0){        fprintf(STDERR,"%s","參數錯誤");        return 1;    }    $instance->processIdx = 0;    $instance->processNum = $num;    pcntl_signal(SIGINT,'sigHandler');    pcntl_signal(SIGTERM,'sigHandler');    $process = new process();    for ($i=1;$i<=$num;$i++){        $instance->proc[$i] = clone $process;        $instance->proc[$i]->file = $i;        $instance->proc[$i]->pid = pcntl_fork();        $instance->processIdx = $i;        if ($instance->proc[$i]->pid<0){            exit("進程創建失敗");        }        else if ($instance->proc[$i]->pid>0){            //nothing            continue;        }else{            worker($instance);        }    }    master($instance);    $exitProcess= [];    while (1){        for ($i=1;$i<=$num;$i++){        //非阻塞方式回收子進程            pcntl_waitpid($instance->proc[$i]->pid,$status,WNOHANG);            if ($status){                $exitProcess[] = $instance->proc[$i]->pid;                fwrite(STDOUT,"worker#".$instance->proc[$i]->pid."-".$status,30);            }        }        if (count($exitProcess)==$instance->processNum){            exit(0);        }        usleep(1000);    }}//簡單的輪詢算法  自己可以用隊列,隨機,鏈表,棧鏈,二叉樹啥的折騰function roundRobin(&$instance,$roll){    /** @var instance $instance */    return $instance->proc[$roll%$instance->processNum+1];}function master(&$instance){    /** @var instance $instance */    fprintf(STDOUT,"master 進程 %d/n",$instance->processIdx);    global $flag;    $roll = 0;    while ($flag){        pcntl_signal_dispatch();        /** @var process $process */        $process = roundRobin($instance,$roll++);        echo "輪詢的進程:".$process->pid.PHP_EOL;        $file = $process->file;        posix_mkfifo($file,0666);        $fd = fopen($file,"w");        fwrite($fd,"hi",2);        sleep(1);    }    for ($i=1;$i<=$instance->processNum;$i++){        posix_kill($instance->proc[$i]->pid,9);    }    fprintf(STDOUT,"master shutdown %d/n",$instance->processIdx);}function getProcess(&$instance){    /** @var instance $instance */    return $instance->proc[$instance->processIdx];}function worker(&$instance){    /** @var process $process */    $process = getProcess($instance);    while (1){        $file = $process->file;        posix_mkfifo($file,0666);        $fd = fopen($file,"r");        $content = fread($fd,10);        fprintf(STDOUT,"worker#%d讀取的內容:%s file=%d/n",posix_getpid(),$content,$file);    }    exit(0);}$instance = new instance();processPool($instance,5);

效果

173f25b35990b42c06bd7ab441ffa4f.png

以上就是PHP 進程池與輪詢調度算法實現多任務的詳細內容,更多請關注 其它相關文章!

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲一区制服诱惑| 亚洲美女av黄| 久久精品国产视频| 国产精品嫩草影院久久久| 国产成人av网址| 久久精品国产精品亚洲| 黑人巨大精品欧美一区二区| 国产精品99免视看9| 中文在线资源观看视频网站免费不卡| 精品亚洲永久免费精品| 日韩在线观看免费全| 欧美在线视频观看| 亚洲xxxxx电影| 亚洲最大福利网站| 亚洲另类欧美自拍| 久久免费视频在线| 欧美性猛交99久久久久99按摩| 国产精品青青在线观看爽香蕉| 欧美性xxxxx极品娇小| 美女啪啪无遮挡免费久久网站| 一区二区三区天堂av| 欧美日韩性生活视频| 欧美午夜片欧美片在线观看| 91久久精品国产91久久| 亚洲级视频在线观看免费1级| 欧美日韩999| 国产精品免费观看在线| 欧美电影免费观看电视剧大全| 欧美成人免费全部| 欧美精品日韩www.p站| 高清欧美性猛交xxxx黑人猛交| 欧美激情高清视频| 久久91精品国产91久久久| 日韩高清av一区二区三区| 成人444kkkk在线观看| 欧美成人三级视频网站| 日本午夜精品理论片a级appf发布| 亚洲欧美国产精品久久久久久久| 性金发美女69hd大尺寸| 色妞欧美日韩在线| 精品久久久久久久大神国产| 久久97久久97精品免视看| 欧美小视频在线| 91免费看片在线| 亚洲精品一区中文字幕乱码| 精品视频一区在线视频| 性色av一区二区三区在线观看| 国产精品第10页| 亚洲激情中文字幕| 日韩精品日韩在线观看| 日韩精品极品在线观看| 精品国产户外野外| 97视频在线观看免费高清完整版在线观看| 岛国av一区二区在线在线观看| 一区二区三区高清国产| 日韩一区二区福利| 亚洲激情在线观看视频免费| 亚洲高清在线观看| 久久天堂av综合合色| 一区二区三区无码高清视频| 日韩av在线天堂网| 亚洲欧美日韩精品| 97人洗澡人人免费公开视频碰碰碰| 亚洲综合国产精品| 久久久精品日本| 国产精品久久久久久久久久新婚| 高清一区二区三区四区五区| 欧美电影免费观看高清| 成人性生交xxxxx网站| 福利视频导航一区| 97视频免费观看| 午夜精品三级视频福利| 亚洲欧洲一区二区三区久久| 国产一区二区三区丝袜| 国产精品黄视频| 色www亚洲国产张柏芝| 国产香蕉一区二区三区在线视频| 久久中文字幕国产| 欧美丝袜一区二区三区| 国产精品久久久久免费a∨| 久久久久久久色| 亚洲国模精品一区| 亚洲免费视频观看| 亚洲美女在线看| 亚洲第一国产精品| 91九色视频在线| 日韩专区在线观看| 日韩亚洲精品电影| 国产精品夜色7777狼人| 欧美电影在线观看高清| 国产欧美日韩91| 久久久91精品国产一区不卡| 欧美激情在线一区| 欧美视频第一页| 色悠悠久久88| 亚洲性av网站| 91在线高清视频| 精品在线小视频| 欧美激情在线观看视频| 欧美激情视频播放| 91视频国产一区| 国产精品自拍小视频| 亚洲人成毛片在线播放| 欧美午夜影院在线视频| 日本精品性网站在线观看| 色悠悠久久久久| 日韩毛片在线观看| 一本大道香蕉久在线播放29| 国产精品欧美激情在线播放| 国产精品草莓在线免费观看| 成人久久久久久| 日韩精品高清在线| 日本久久久久亚洲中字幕| 国产成+人+综合+亚洲欧美丁香花| 国产亚洲激情在线| 国产精品影片在线观看| 久久中文字幕国产| 久久香蕉频线观| 亚洲精美色品网站| 日韩精品一二三四区| 欧美壮男野外gaytube| 亚洲一区二区三区乱码aⅴ蜜桃女| 91精品国产综合久久男男| 中文字幕精品一区二区精品| 亚洲欧美日韩一区在线| 中国人与牲禽动交精品| 国产亚洲欧美日韩精品| 欧美国产激情18| 日韩经典第一页| 欧美黄色片在线观看| 国产精品久久久精品| 亚洲男人天堂视频| 国产精品久久电影观看| 国产日韩欧美在线观看| 亚洲字幕在线观看| 欧美成人午夜激情| 欧美日韩国产一区二区三区| 欧美专区福利在线| 亚洲a级在线播放观看| 国产成人精品午夜| 亚洲欧美在线第一页| 国精产品一区一区三区有限在线| 欧美一区二区三区精品电影| 色悠久久久久综合先锋影音下载| 午夜精品久久久99热福利| 亚洲成在人线av| 国产精品久久9| 92裸体在线视频网站| 欧美激情中文字幕乱码免费| 国产精品免费一区二区三区都可以| 成人免费直播live| 久久久免费在线观看| 欧美国产一区二区三区| 久久99国产综合精品女同| 国产成人精品免费久久久久| 中文字幕国产精品久久| 裸体女人亚洲精品一区| 2019国产精品自在线拍国产不卡| 成人av色在线观看| 亚洲三级av在线| 国产精品视频公开费视频| 亚洲摸下面视频| 久久久久久久久亚洲| 中文字幕自拍vr一区二区三区|