1. 程式人生 > 實用技巧 >一圖理解程序、執行緒。【結合真是生活(不僅僅是懵逼、不實際的概念)】

一圖理解程序、執行緒。【結合真是生活(不僅僅是懵逼、不實際的概念)】

總結:

A: 個人理解:多程序、協程的區別:

相同點:
都是達到併發的處理很多工的目的
都是起多個 程式。
不同點:
1、達到併發:~~協程是一個程序。程序必須多個。~~只能 一個CPU上來回跳,多個CPU上等著執行。
2、沒有等待、阻塞的情況下,協程沒毛用。因為CPU一直在執行,沒有空閒時間搞什麼併發去。

B:兩個都可以建立多個。

C:新版swoole裡沒有執行緒的概念。有執行緒也是廖雪峰的原始碼裡有,人家是c

重要底層參考(自己的文章):執行緒是來幹嘛的

PHP的多程序、執行緒頂多就是處理後臺複雜任務

參照物就是結合實際:

參照物很重要:
php-fpm或swoole的多worker,都是多程序。

這裡的多,是針對網路上大批量的請求而言的。處於網路請求階段的多,處理很多網路請求。

而我現在是要多程序處理一個檔案。
這個多的時間點是:某一個網路請求後,目的:想要再啟動多個程序分開處理原來的一個任務。

結合swoole來說才有意義:

官網原話:

1、什麼是協程

協程可以簡單理解為執行緒,只不過這個執行緒是使用者態的,不需要作業系統參與,建立銷燬和切換的成本非常低,和執行緒不同的是協程沒法利用多核 cpu 的,想利用多核 cpu 需要依賴 Swoole 的多程序模型。
2、如果同時有成千上萬的併發請求,某一時刻某個程序內部會存在成千上萬的協程,那麼 CPU 資源是有限的,到底執行哪個協程的程式碼?

決定到底讓 CPU 執行哪個協程的程式碼決斷過程就是協程排程

一圖全解:

在這裡插入圖片描述