PHP 線程,進程、併發、並行 的理解

摘錄自(有刪減和修改):
http://chenpeng.info/html/3021
進程是操作系統分配資源和調度的功能單元,一個進程裏面有一個或者多個線程,線程是操作系統的一個獨立運算單元。通常可以認爲一個軟件對應一個進程,並行是指多個軟件一起運行,實際上分時複用而已,併發是指某個軟件在運行的時候把計算分給多個CPU同時進行計算,是真正的同一時間內一起發生的事情。
一個比較形象的理解方式:
http://www.ruanyifeng.com/blog/2013/04/processes_and_threads.html

php-fpm使用的就是多進程模型。
HHVM它選擇的是多線程模型。

對於某個服務而言,譬如web服務,主要考慮它的併發能力,就是單位時間內能處理的請求數量。而並行計算就是爲了提高併發能力的。脫離nginx或者apache來說,php的並行處理能力,既可以用多進程的模型來提高,也可以用多線程的模型來提高。最簡單的情況下,php提供單進程單線程的方式來提供服務,每次之處理一個請求,如果請求的處理速度足夠快,一秒時間內併發能力也可以算是強的,但是這樣比較浪費資源,所以往往會根據CPU、內存、網絡的情況來設置多進程、多線程或者多服務器來提高併發能力。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章