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

首頁 > 語言 > PHP > 正文

詳解php協程知識點

2024-05-05 00:05:25
字體:
來源:轉載
供稿:網友

多任務 (并行和并發)

在講協程之前,先談談多進程、多線程、并行和并發。

對于單核處理器,多進程實現多任務的原理是讓操作系統給一個任務每次分配一定的 CPU 時間片,然后中斷、讓下一個任務執行一定的時間片接著再中斷并繼續執行下一個,如此反復。

由于切換執行任務的速度非??欤o外部用戶的感受就是多個任務的執行是同時進行的。

多進程的調度是由操作系統來實現的,進程自身不能控制自己何時被調度,也就是說: 進程的調度是由外層調度器搶占式實現的

而協程要求當前正在運行的任務自動把控制權回傳給調度器,這樣就可以繼續運行其他任務。這與搶占式的多任務正好相反, 搶占多任務的調度器可以強制中斷正在運行的任務, 不管它自己有沒有意愿。如果僅依靠程序自動交出控制的話,那么一些惡意程序將會很容易占用全部 CPU 時間而不與其他任務共享。

協程的調度是由協程自身主動讓出控制權到外層調度器實現的

回到剛才生成器實現 xrange 函數的例子,整個執行過程的交替可以用下圖來表示:

協程可以理解為純用戶態的線程,通過協作而不是搶占來進行任務切換。

相對于進程或者線程,協程所有的操作都可以在用戶態而非操作系統內核態完成,創建和切換的消耗非常低。

簡單的說協程 就是提供一種方法來中斷當前任務的執行,保存當前的局部變量,下次再過來又可以恢復當前局部變量繼續執行。

我們可以把大任務拆分成多個小任務輪流執行,如果有某個小任務在等待系統 IO,就跳過它,執行下一個小任務,這樣往復調度,實現了 IO 操作和 CPU 計算的并行執行,總體上就提升了任務的執行效率,這也便是協程的意義

多線程

在單核下,多線程必定是并發的;

不過現在的統一進程的多線程是可以運行在多核CPU下,所以可以是并行的

并發(Concurrency)

是指能處理多個同時性活動的能力,并發事件之間不一定要同一時刻發生。

并行(Parallesim)

是指同時發生的兩個并發事件,具有并發的含義,而并發則不一定并行。
多個操作可以在重疊的時間段內進行。

并行和并發區別

并發指的是程序的結構,并行指的是程序運行時的狀態

并行一定是并發的,并行是并發設計的一種

單線程永遠無法達到并行狀態

協程

協程的支持是在生成器的基礎上, 增加了可以回送數據給生成器的功能(調用者發送數據給被調用的生成器函數). 

這就把生成器到調用者的單向通信轉變為兩者之間的雙向通信.

我們在上篇文章已經講過了send方法, 下面讓我們理解下協程

同步代碼

在沒有涉及到異步執行代碼之前,我們的代碼都是這樣的

function printNum($max, $caller){  for ($i=0; $i<$max; $i++ ) {    echo "調度者:" . $caller . " 打印:" . $i . PHP_EOL;  }} printNum(3, "caller1");printNum(3, "caller2"); # output調度者:caller1 打印:0調度者:caller1 打印:1調度者:caller1 打印:2調度者:caller2 打印:0調度者:caller2 打印:1調度者:caller2 打印:2

使用協程后改進的代碼

初稿,手動調整生成器執行

# 本代碼手動調整了進程執行代碼的順序,當然本代碼實現不用協程也可以,只是利用本流程說明協程作用# 生成器給了我們函數中斷,協程[生成器send]給了我們重新喚起生成器函數的能力function printNumWithGen($max){  for ($i=0; $i<$max; $i++ ) {    $res = yield $i;    echo $res;  }} $gen1 = printNumWithGen(3);$gen2 = printNumWithGen(3); // 手動執行caller1 再 caller2$gen1->send("調度者: caller1 打印:" . $gen1->current() . PHP_EOL);$gen2->send("調度者: caller2 打印:" . $gen2->current() . PHP_EOL); // 手動執行caller1 再 caller2$gen1->send("調度者: caller1 打印:" . $gen1->current() . PHP_EOL);$gen2->send("調度者: caller2 打印:" . $gen2->current() . PHP_EOL); // 手動執行caller2 再 caller1$gen2->send("調度者: caller2 打印:" . $gen2->current() . PHP_EOL);$gen1->send("調度者: caller1 打印:" . $gen1->current() . PHP_EOL); # output調度者: caller1 打印:0調度者: caller2 打印:0調度者: caller1 打印:1調度者: caller2 打印:1調度者: caller2 打印:2調度者: caller1 打印:2

總結

上面案例應該讓大家理解了協程設計的意義和如何使用協程

那么接下去我們為我們的協程自動一個自動調度器(Co自動執行器),無需再手動來中斷和恢復了


注:相關教程知識閱讀請移步到PHP教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产成人涩涩涩视频在线观看| 国产日韩欧美在线| 一区二区三区四区在线观看视频| 91国产视频在线| 精品国内产的精品视频在线观看| 最近中文字幕2019免费| 国产精品福利网站| 国产精品十八以下禁看| 日韩免费在线免费观看| 综合激情国产一区| 欧美在线一区二区视频| 欧美视频一区二区三区…| 色阁综合伊人av| 日韩av影视在线| 8050国产精品久久久久久| 国产精品视频精品视频| 午夜精品视频网站| 欧美激情女人20p| 欧美成人小视频| 亚洲影视中文字幕| 成人av电影天堂| 亚洲视频精品在线| 国产精品久久一| 国产亚洲a∨片在线观看| 中文字幕日韩在线观看| 国产精品a久久久久久| 高清欧美一区二区三区| 欧美激情在线狂野欧美精品| 欧美激情视频播放| 日韩在线观看高清| 亚洲最大中文字幕| 久久久欧美一区二区| 国产日韩欧美自拍| 国产日韩欧美视频在线| 亚洲激情中文字幕| 在线播放国产一区二区三区| 最近的2019中文字幕免费一页| 欧美精品久久久久久久久久| 欧美理论电影在线观看| 麻豆乱码国产一区二区三区| 亚洲摸下面视频| 亚洲免费伊人电影在线观看av| 亚洲欧洲日产国码av系列天堂| 亚洲人成在线电影| 欧美小视频在线观看| 色噜噜狠狠狠综合曰曰曰88av| 亚洲精品电影久久久| 亚洲国产成人爱av在线播放| 97超碰国产精品女人人人爽| 亚洲a成v人在线观看| 日韩在线视频导航| 91在线观看免费高清完整版在线观看| 91国内精品久久| 美女国内精品自产拍在线播放| 高清日韩电视剧大全免费播放在线观看| 欧美精品在线视频观看| 亚洲欧美综合图区| 成人久久久久爱| 97成人在线视频| 国产91色在线|| 91国产高清在线| 午夜免费久久久久| 国产97色在线|日韩| 久久精品电影一区二区| 茄子视频成人在线| 亚洲精品98久久久久久中文字幕| 中文字幕亚洲国产| 午夜精品久久久久久久99热浪潮| 欧美高跟鞋交xxxxxhd| 色综合久久88| 亚洲性xxxx| 亚洲乱码一区av黑人高潮| 国产成人欧美在线观看| 亚洲影视九九影院在线观看| 日本一本a高清免费不卡| 人九九综合九九宗合| 91经典在线视频| 91香蕉亚洲精品| 欧美激情一区二区久久久| 91久久精品国产91久久| 久久影院资源站| 日韩精品免费在线视频观看| 精品中文字幕久久久久久| 成人午夜高潮视频| xx视频.9999.com| 亚洲国产高清高潮精品美女| 久久天天躁狠狠躁老女人| 琪琪第一精品导航| 成人女保姆的销魂服务| 精品视频久久久久久| 亚洲欧美一区二区激情| 欧美日韩一区免费| 97视频在线免费观看| 日韩欧美在线网址| 欧美wwwxxxx| 国产成人一区三区| 亚洲精品久久久久久久久久久久久| 国产狼人综合免费视频| 亚洲国产成人久久综合一区| 国产99久久精品一区二区 夜夜躁日日躁| 久久成人综合视频| 久久久久久网址| 成人国产精品日本在线| 成人激情免费在线| 久久久极品av| 日韩av片永久免费网站| 97激碰免费视频| 欧美性色视频在线| 亚洲成人久久一区| 91色视频在线观看| 亚洲福利视频在线| 久久综合网hezyo| 国产精品入口日韩视频大尺度| 国产精品美乳在线观看| 性亚洲最疯狂xxxx高清| 欧美大胆a视频| 国产精品女人久久久久久| 97精品一区二区视频在线观看| 日韩av成人在线观看| 色噜噜国产精品视频一区二区| 国产女人18毛片水18精品| 久久久精品国产亚洲| 国产精品极品美女在线观看免费| 国产亚洲欧美视频| 亚洲精品国产美女| 欧美裸体xxxx| 日韩av网站在线| 91亚洲人电影| 日韩中文有码在线视频| 日韩免费看的电影电视剧大全| 欧美一级视频一区二区| 国产成人精品久久二区二区| 亚洲成人激情在线观看| 久久成人一区二区| 欧美激情精品久久久久久蜜臀| 伊人伊成久久人综合网小说| 午夜精品一区二区三区在线视频| 亚洲欧美日韩另类| 精品久久久久久久大神国产| 亚洲成人xxx| 精品免费在线视频| 麻豆一区二区在线观看| 亚洲精品美女在线观看| 插插插亚洲综合网| 久国内精品在线| 精品成人69xx.xyz| 精品国产区一区二区三区在线观看| 另类视频在线观看| 亚洲人成电影网站| 欧美电影免费观看大全| 色yeye香蕉凹凸一区二区av| 久久久久久久久久久国产| 国产一区二区香蕉| 国产一区二区三区在线观看视频| 精品成人在线视频| 亚洲精品视频二区| 亚洲第一免费播放区| 日韩精品视频中文在线观看| 综合激情国产一区| 亚洲人在线观看| 欧美乱妇40p| 久久久久久久国产精品视频| 在线观看欧美日韩| 日韩电影免费观看在线|