如題。為什么在用戶層調(diào)用PHP的sleep函數(shù)不會被swoole理解為阻塞?而是要調(diào)用swoole自己的co::sleep()?
2 回答

翻翻過去那場雪
TA貢獻2065條經(jīng)驗 獲得超14個贊
因為sleep是PHP實現(xiàn)的函數(shù),swoole無法檢測到用戶調(diào)用了這個函數(shù),因此無法讓當(dāng)前執(zhí)行的協(xié)程讓出調(diào)度權(quán)。
這個跟golang不一樣。golang在編譯器上實現(xiàn)了函數(shù)調(diào)用時是否阻塞的來實現(xiàn)讓出調(diào)度權(quán)。swoole本質(zhì)上還是PHP的擴展,實際代碼的解析和編譯還是PHP內(nèi)核來實現(xiàn)。
類似的還有文件讀寫,系統(tǒng)調(diào)用等,都需要自己去實現(xiàn)讓出調(diào)度權(quán)的邏輯判斷函數(shù),否則也是阻塞worker進程的。
- 2 回答
- 0 關(guān)注
- 575 瀏覽
添加回答
舉報
0/150
提交
取消