參考:https://www.cnblogs.com/wangzhaobo/articles/9667765.html
進程和線程的關係
進程: 就是執行一個應用程序會創建一個進程,它同時也會佔用一部分內存的這段計算機操作的狀態時間,進程可以創建子進程。
線程: 就是一個進程執行過程中,分爲多個執行任務,可以理解爲多端執行代碼,然後這個多段執行狀態理解爲線程,線程是操作系統進行運算調度的最小單位。
進程和線程的關係: 一個程序有多個進程,一個進程有多個線程。
再來張出現了很多次的圖
由圖可知,swoole分爲兩大進程manager和master,master是用來接收維護socket連接,協調相關有關線程等做雜活的,manager是用來fork 管理worker進程和task進程的。
深入理解master和manager
他們之間的關係可以理解爲 Reactor 就是 nginx,Worker 就是 PHP-FPM。Reactor線程異步並行地處理網絡請求,然後再轉發給 Worker 進程中去處理。Reactor 和 Worker 間通過 unixSocket進行通信。
一個更通俗的比喻,假設 Server 就是一個工廠,那 Reactor 就是銷售,接受客戶訂單。 而 Worker 就是工人,當銷售接到訂單後,Worker 去工作生產出客戶要的東西。而 TaskWorker 可以理解爲行政人員,可以幫助 Worker幹些雜事,讓 Worker 專心工作。
摘自swoole文檔