首頁 >php框架 >Swoole >swoole協程是屬於行程還是執行緒

swoole協程是屬於行程還是執行緒

WBOY
WBOY原創
2022-03-14 15:37:572851瀏覽

swoole協程是屬於執行緒的。協程是在線程裡執行的,協程是輕量級線程,Swoole的協程在底層實作上是單線程的,同一時間只有一個協程在工作,而線程會被作業系統調度到多個CPU並行執行。

swoole協程是屬於行程還是執行緒

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

swoole協程是屬於行程還是執行緒

什麼是進程?

進程是系統中正在運行的程序,程式一旦運行就是進程。

行程可以看成程式執行的一個實例。

Tags:一個進程無法存取另一個進程的變數和資料結構,如果想讓一個進程存取另一個進程的資源,需要使用進程間通信,例如管道,文件,套接字等。

什麼是執行緒?

執行緒屬於進程,是程式的執行者。

一個行程至少包含一個主線程,也可以有更多的子線程,每個執行緒使用其所屬行程的堆疊空間。

執行緒是行程的一個實體,是行程的一條執行路徑。

Tags:同一行程內的多個執行緒會共用部分狀態,多個執行緒可以讀寫同一塊記憶體。

什麼是協程?

協程比較抽象 它是程式內部的一定排程機制;

協程是輕量級執行緒, 協程的創建、切換、掛起、銷毀全部為記憶體操作,消耗是非常低的。

協程是屬於線程,協程是在執行緒裡執行的。

協程的調度是使用者手動切換的,所以又叫用戶空間執行緒。

協程的調度策略是:協作式調度。

協程與執行緒區別:

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

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

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

協程的適用場景:

高並發服務,如秒殺系統、高效能API介面、RPC伺服器,使用協程模式,服務的容錯率會大幅增加,某些介面故障時,不會導致整個服務崩潰。

  爬蟲,可達到非常龐大的同時能力,即使是非常慢速的網路環境,也可以有效率地利用頻寬。

  即時通訊服務,如IM聊天、遊戲伺服器、物聯網、訊息伺服器等等,可以確保訊息通訊完全無阻塞,每個訊息包都可以即時處理。

推薦學習:swoole教學

#

以上是swoole協程是屬於行程還是執行緒的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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