首頁  >  文章  >  php框架  >  swoole協程是什麼意思

swoole協程是什麼意思

WBOY
WBOY原創
2022-02-10 11:58:443490瀏覽

swoole協程是更輕量級的線程,一個線程可以擁有多個協程,協程是在線程裡面執行的,主要用於將線程中的競爭資源轉化成協作運行,適用於處理IO密集型任務。

swoole協程是什麼意思

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

swoole協程是什麼意思

#先聊聊協程,了解協程到底有什麼用,其特點又是什麼

協程(Coroutines)是一種比線程更加輕量級的存在,正如一個進程可以擁有多個線程一樣,一個線程可以擁有多個協程。協程具有以下幾個特點

  • 使用者態執行,完全由程式所控制,不是由作業系統核心所管理的

  • 適用於處理IO密集型任務,至於什麼是IO密集型任務這裡就不做詳細介紹了,主要區別於CPU密集型任務

  • 將線程中的競爭資源,轉化成協作運行

  • 通道(Channel)的方式進行協程間的通訊

  • 少量的上下文切換開銷,主要是運行在執行緒上,對比進程的上下文切換是保存在棧資源當中,而協程是異步非阻塞的,相當於用戶態線程中的隊列任務,只需要利用channel作為回調即可,不需要在任務完成後二次的資源搶奪

協程可以簡單理解為線程,只不過這個線程是用戶態的,不需要作業系統參與,創建銷毀和切換的成本非常低,和線程不同的是協程沒法利用多核心cpu 的,想利用多核心cpu 需要依賴Swoole 的多重處理模型。

簡單的說協程是寄宿在線程下程式設計師實現的一種跟更輕的並發的協作輕量級線程

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

協程和執行緒的區別

本質

#執行緒 核心態

協程 使用者狀態

調度方式

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

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

推薦學習:swoole教程

以上是swoole協程是什麼意思的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn