鍍金池/ 問答/PHP  C/ 為什么現(xiàn)在swoole使用隱式協(xié)程?而不是yield方式的協(xié)程?

為什么現(xiàn)在swoole使用隱式協(xié)程?而不是yield方式的協(xié)程?

協(xié)程和多線程相比,一個主要的優(yōu)勢就在于主動讓出CPU,而不是CPU搶占。
這樣,很多為了避免搶占的鎖,就可以避免了。

但是swoole選用了隱式的協(xié)程,這樣對于上層代碼來講,CPU還是被其他協(xié)程搶占的(而不是通過yield等方式讓出的),那就可能導(dǎo)致很多搶占導(dǎo)致的問題。
比如mysql和redis查詢到一半,mysql client的狀態(tài)被其他協(xié)程修改了,等等。

不知道為何swoole采用了隱式的協(xié)程,以及這種做法會有坑嗎?

回答
編輯回答
陌璃

我覺得就是讓協(xié)程用起來更加方便了,而使用 yield 實(shí)現(xiàn)起來是相當(dāng)晦澀的。

yield 的實(shí)現(xiàn)參見鳥哥博客: 在PHP中使用協(xié)程實(shí)現(xiàn)多任務(wù)調(diào)度

2017年6月9日 20:45