PHP不內建多執行緒程式設計支援,是為讓PHP容器 PHP FPM Apache 執行更加穩健,不懂求解釋?

時間 2021-06-03 02:01:23

1樓:

執行緒更輕,更容易共享資源,比如開啟的檔案。

執行緒容易處理不當互相影響。

程序頁表都不一樣所以乙個掛了不容易影響另外的程序。但是資源共享比較麻煩。

反對 @Dean.Lee 對執行緒和程序的觀念。

程序和執行緒的區別更多是在共享資源方面。

在Linux 下,執行緒是共享頁表和檔案還有其他資源的。

無論是執行緒還是程序都是用clone 系統呼叫來生成的。只是標誌位不一樣

pthread 的標誌位:

createthread.c source code [glibc/sysdeps/unix/sysv/linux/createthread.c]

const int clone_flags = (CLONE_VM | CLONE_FS | CLONE_FILESCLONE_SYSVSEM | CLONE_SIGHANDCLONE_THREAD | CLONE_SETTLSCLONE_PARENT_SETTIDCLONE_CHILD_CLEARTID | 0);

然後主要幾個標誌位的意思:

CLONE_VM共享記憶體空間

CLONE_FS共享相同的檔案系統,包括root、當前目錄、umask

CLONE_FILES 共享相同的檔案描述符(file descriptor)表

CLONE_SYSVSEM 共享乙個System V訊號量

CLONE_SIGHAND 共享相同的訊號處理(signal handler)表

CLONE_THREAD 共享相同的執行緒群

。。。。。

2樓:Dean.Lee

而多執行緒則不能像多程序一樣並行處理,多執行緒的處理模式如下:ABC在同一條程序中多條執行緒穿插執行,如果某一條執行緒某一段指令碼執行阻塞(如sleep或死迴圈等),則整條程序被卡死。

而且一般多執行緒的都用在非同步處理需求上,非同步這個東西本來就很繞,所以不建議使用。

如果業務處理方面需要使用非同步,那我強烈推薦使用swoole擴充套件,用多程序去負責非同步執行,這樣就不會阻塞主工作程序了。

關於多執行緒程式設計和CPU多核多執行緒的關係?

佐佐浪 具體到你的例子,修改優先順序和修改時間片是無法達到這個效果的。你需要做的是把你的計算部分做成並行的。單獨乙個執行緒是達不到你要的效果的。 棒子先生 首相我們了解下為什麼需要用到4核,這是由於不能盲目的提高CPU的主頻和頻寬,這樣會產生各種實際很難處理的問題,比如溫度飆公升等。舉例來說我們需要...

為什麼php多執行緒沒人用

ZealReal 程序資源很昂貴,所以不會輕易使用多程序。至於執行緒,php支援的不好,php5後有個協程,php開發人員基本不會去使用,協程相當於使用使用者空間的執行緒 一般執行緒是系統空間 Swoole在非同步及協程方面做的不錯,開始會越來越多人使用,大大提高php的併發能力。 import 潘...

多執行緒網路程式設計中如何合理地選擇執行緒數?

jameswhale 若業務是CPU計算型,建立比CPU核多的執行緒的確是沒有意義的,徒增執行緒的切換開銷。若業務是IO密集型的,可以建立比CPU核數多一些的執行緒,實際經驗是一般設定為2倍。 戈君 需要的執行緒數 qps latency 單位秒 依據是little s law,類似的應用是tcp中...