協程可以簡單理解為執行緒,只不過這個執行緒是使用者態的,不需要作業系統參與,建立銷毀和切換的成本非常低,和執行緒不同的是協程沒法利用多核 cpu 的,想利用多核 cpu 需要依賴 swoole 的多程序模型。—— swoole 協程一章可以把協程看成一道小學數學的一道題目:「合理安排時間」,來我們先做一道題目:
小明下班後回家煮飯,煲湯需要 10 分鐘,煮飯需要 8 分鐘, 炒菜需要 5 分鐘,,請問小明最少需要多少分鐘能煮好飯?
public
function
async()
總耗時:23 分鐘**很容易看懂,等待湯煮好之後再煮飯,然後再等待飯煮好再炒菜,生活中不會這樣操作吧?這就要引入協程來解決這個問題了。
<?php
namespace
study\co
;use
swoole\coroutine
;use
swoole\coroutine\waitgroup
;use
swoole
;classco)
;// 記錄一下煮飯(記錄乙個任務)
$wg-
>
add();
// 建立乙個煮飯任務(開啟乙個新的協程)
coroutine:
:create
(function()
use(
$wg,
&$result))
;// 記錄一下炒菜
$wg-
>
add();
// 建立乙個炒菜任務(再開啟乙個新的協程)
coroutine:
:create
(function()
use(
$wg,
&$result))
;// 等待全部任務完成
$wg-
>
wait()
;// 返回資料(上菜!)
var_dump
($result);
});var_dump
('總耗時:'.(
time()
-$starttime).
' 分鐘');
}}
總耗時:10 分鐘小明最少需要 10 分鐘能煮好飯。
swoole 學習筆記 做一頓飯來理解協程
簡介 最近學習 swoole 接觸到協程,記錄一下我理解到的協程。文章比較白話,而且目前理解的還非常淺,寫出自己的想法,請大佬們多多指點。協程協程可以簡單理解為執行緒,只不過這個執行緒是使用者態的,不需要作業系統參與,建立銷毀和切換的成本非常低,和執行緒不同的是協程沒法利用多核 cpu 的,想利用多...
swoole 學習筆記 做一頓飯來理解協程
簡介 最近學習 swoole 接觸到協程,記錄一下我理解到的協程。文章比較白話,而且目前理解的還非常淺,寫出自己的想法,請大佬們多多指點。協程協程可以簡單理解為執行緒,只不過這個執行緒是使用者態的,不需要作業系統參與,建立銷毀和切換的成本非常低,和執行緒不同的是協程沒法利用多核 cpu 的,想利用多...
swoole 學習筆記 做一頓飯來理解協程
簡介 最近學習 swoole 接觸到協程,記錄一下我理解到的協程。文章比較白話,而且目前理解的還非常淺,寫出自己的想法,請大佬們多多指點。協程協程可以簡單理解為執行緒,只不過這個執行緒是使用者態的,不需要作業系統參與,建立銷毀和切換的成本非常低,和執行緒不同的是協程沒法利用多核 cpu 的,想利用多...