一圖理解程序、執行緒。【結合真是生活(不僅僅是懵逼、不實際的概念)】
阿新 • • 發佈:2020-10-10
總結:
A: 個人理解:多程序、協程的區別:
相同點:
都是達到併發的處理很多工的目的
都是起多個 程式。
不同點:
1、達到併發:~~協程是一個程序。程序必須多個。~~只能 一個CPU上來回跳,多個CPU上等著執行。
2、沒有等待、阻塞的情況下,協程沒毛用。因為CPU一直在執行,沒有空閒時間搞什麼併發去。
B:兩個都可以建立多個。
C:新版swoole裡沒有執行緒的概念。有執行緒也是廖雪峰的原始碼裡有,人家是c
重要底層參考(自己的文章):執行緒是來幹嘛的
PHP的多程序、執行緒頂多就是處理後臺複雜任務
參照物就是結合實際:
參照物很重要:
php-fpm或swoole的多worker,都是多程序。
而我現在是要多程序處理一個檔案。
這個多的時間點是:某一個網路請求後,目的:想要再啟動多個程序分開處理原來的一個任務。
結合swoole來說才有意義:
官網原話:
1、什麼是協程
協程可以簡單理解為執行緒,只不過這個執行緒是使用者態的,不需要作業系統參與,建立銷燬和切換的成本非常低,和執行緒不同的是協程沒法利用多核 cpu 的,想利用多核 cpu 需要依賴 Swoole 的多程序模型。
2、如果同時有成千上萬的併發請求,某一時刻某個程序內部會存在成千上萬的協程,那麼 CPU 資源是有限的,到底執行哪個協程的程式碼?
決定到底讓 CPU 執行哪個協程的程式碼決斷過程就是協程排程