swoole協程是更加輕量級的線程,一個線程可以擁有多個協程,協程是在線程里面執行的,主要用于將線程中的競爭資源轉化成協作運行,適用于處理IO密集型任務。
本教程操作環境:Windows10系統、Swoole4版、DELL G3電腦
swoole協程是什么意思
首先聊聊協程,了解一下協程到底有什么用,其特點又是什么
協程(Coroutines)是一種比線程更加輕量級的存在,正如一個進程可以擁有多個線程一樣,一個線程可以擁有多個協程。?協程具有以下幾個特點
-
用戶態執行,完全由程序所控制,不是被操作系統內核所管理的
-
適用于處理IO密集型任務,至于什么是IO密集型任務這里就不做詳細介紹了,主要區別于CPU密集型任務
-
將線程中的競爭資源,轉化成協作運行
-
通道(channel)的方式進行協程間的通信
-
少量的上下文切換開銷,主要是運行在線程上,對比進程的上下文切換是保存在棧資源當中,而協程是異步非阻塞的,相當于用戶態線程中的隊列任務,只需要利用channel作為回調即可,不需要在任務完成后二次的資源搶奪
協程可以簡單理解為線程,只不過這個線程是用戶態的,不需要操作系統參與,創建銷毀和切換的成本非常低,和線程不同的是協程沒法利用多核 cpu 的,想利用多核 cpu 需要依賴 Swoole 的多進程模型。
簡單的說協程是寄宿在線程下程序員實現的一種跟更輕量的并發的協作輕量線程
隨著程序員人群的增大,大佬也不斷的爆發式增長,當然就開始有人覺得線程不好用了,那怎么辦呢?當然是基于線程的理念上再去實現一套更加輕量、更好騙star的一套輕量線程(事實上協程不能完全被認為線程,因為一個線程可以有多個協程)
協程和線程的區別
本質
線程?內核態
協程?用戶態
調度方式
線程的調度方式為系統調度,常用的調度策略有分時調度、搶占調度。說白就是線程的調度完全不受自己控制
協程的調度方式為協作式調度?不受內核控制由自由策略調度切換
推薦學習: swoole教程