發(fā)布時間:2021-09-22 16:47:44來源:轉(zhuǎn)載
PHP 多進程和多線程是什么?PHP 多進程和多線程有什么區(qū)別,小編今天為大家介紹PHP 多進程和多線程的優(yōu)缺點。
多進程
1.使用多進程, 子進程結(jié)束以后, 內(nèi)核會負責(zé)回收資源
2.使用多進程, 子進程異常退出不會導(dǎo)致整個進程Thread退出. 父進程還有機會重建流程.
3.一個常駐主進程, 只負責(zé)任務(wù)分發(fā), 邏輯更清楚.
4.多進程方式更加穩(wěn)定,另外利用進程間通信(IPC)也可以實現(xiàn)數(shù)據(jù)共享。
5.共享內(nèi)存,這種方式和線程間讀寫變量是一樣的,需要加鎖,會有同步、死鎖問題。
6.消息隊列,可以采用多個子進程搶隊列模式,性能很好
多線程
1.線程是在同一個進程內(nèi)的,可以共享內(nèi)存變量實現(xiàn)線程間通信
2.線程比進程更輕量級,開很大量進程會比線程消耗更多系統(tǒng)資源
3.多線程也存在一些問題:
4.線程讀寫變量存在同步問題,需要加鎖
5.鎖的粒度過大存在性能問題,可能會導(dǎo)致只有1個線程在運行,其他線程都在等待鎖
6.同時使用多個鎖,邏輯復(fù)雜,一旦某個鎖沒被正確釋放,可能會發(fā)生線程死鎖
7.某個線程發(fā)生致命錯誤會導(dǎo)致整個進程崩潰