swoole協(xié)程為什么是單線程

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

swoole協(xié)程為什么是單線程

本教程操作環(huán)境:Windows10系統(tǒng)、Swoole4版、DELL G3電腦

swoole協(xié)程為什么是單線程

簡單的說協(xié)程是寄宿在線程下程序員實現(xiàn)的一種跟更輕量的并發(fā)的協(xié)作輕量線程

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

協(xié)程和線程的區(qū)別

本質(zhì)

線程?內(nèi)核態(tài)

協(xié)程?用戶態(tài)

調(diào)度方式

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

協(xié)程的調(diào)度方式為協(xié)作式調(diào)度?不受內(nèi)核控制由自由策略調(diào)度切換

上述說了協(xié)程是用戶態(tài)的,所以所謂的協(xié)作式調(diào)度直接可以理解為是程序員寫的調(diào)度方式,也就是我想怎么調(diào)度就怎么調(diào)度,而不用通過系統(tǒng)內(nèi)核被調(diào)度。

淺入理解swoole的協(xié)程

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

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

Swoole的協(xié)程在底層實現(xiàn)上是單線程的,因此同一時間只有一個協(xié)程在工作,協(xié)程的執(zhí)行是串行的。這與線程不同,多個線程會被操作系統(tǒng)調(diào)度到多個CPU并行執(zhí)行。

一個協(xié)程正在運行時,其他協(xié)程會停止工作。當(dāng)前協(xié)程執(zhí)行阻塞IO操作時會掛起,底層調(diào)度器會進(jìn)入事件循環(huán)。當(dāng)有IO完成事件時,底層調(diào)度器恢復(fù)事件對應(yīng)的協(xié)程的執(zhí)行。

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

推薦學(xué)習(xí): swoole教程

以上就是

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