swoole協程為什么是單線程

swoole中,因為協程的切換是串行的,在同一個時間點只能運行一個協程,一個協程正在運行時,其他協程會停止工作,所以swoole的協程是基于單線程的。

swoole協程為什么是單線程

本教程操作環境:Windows10系統、Swoole4版、DELL G3電腦

swoole協程為什么是單線程

簡單的說協程是寄宿在線程下程序員實現的一種跟更輕量的并發的協作輕量線程

隨著程序員人群的增大,大佬也不斷的爆發式增長,當然就開始有人覺得線程不好用了,那怎么辦呢?當然是基于線程的理念上再去實現一套更加輕量、更好騙star的一套輕量線程(事實上協程不能完全被認為線程,因為一個線程可以有多個協程)

協程和線程的區別

本質

線程?內核態

協程?用戶態

調度方式

線程的調度方式為系統調度,常用的調度策略有分時調度、搶占調度。說白就是線程的調度完全不受自己控制

協程的調度方式為協作式調度?不受內核控制由自由策略調度切換

上述說了協程是用戶態的,所以所謂的協作式調度直接可以理解為是程序員寫的調度方式,也就是我想怎么調度就怎么調度,而不用通過系統內核被調度。

淺入理解swoole的協程

既然打算淺入理解的swoole的協程,我們必須要知道swoole的協程模型。

swoole的協程是基于單線程。可以理解為協程的切換是串行的,再同一個時間點只運行一個協程.

Swoole的協程在底層實現上是單線程的,因此同一時間只有一個協程在工作,協程的執行是串行的。這與線程不同,多個線程會被操作系統調度到多個CPU并行執行。

一個協程正在運行時,其他協程會停止工作。當前協程執行阻塞IO操作時會掛起,底層調度器會進入事件循環。當有IO完成事件時,底層調度器恢復事件對應的協程的執行。

對CPU多核的利用,仍然依賴于Swoole引擎的多進程機制。

推薦學習: swoole教程

以上就是

? 版權聲明
THE END
喜歡就支持一下吧
點贊10 分享