為什麼 PHP 有了 Thread 還需要 Swoole ?eechen2018-02-19 11:27:22

Swoole是一個非同步引擎,提供的不是多執行緒API,而是各種非同步API,包括網路和檔案系統等等非同步操作。其中Swoole從2系列引入的協程本質也是為了解決阻塞問題,底層並不是基於多執行緒實現的。為了使用CPU多核,Swoole使用的是多程序架構。

總而言之,解決阻塞,非同步比多執行緒更有優勢。

為什麼 PHP 有了 Thread 還需要 Swoole ?SuFuring2018-02-19 11:39:07

你這個問題可以歸類到為什麼要使用swoole。swoole可以解決什麼事情。

swoole官網可以幫助到你。

php擁有建立執行緒。

但是swoole的目的是快速開發。

所以兩者沒什麼聯絡。

你想說的聯絡應該只是thread,可以建立子執行緒,而swoole部分功能程式碼也是實現這個。

要認清楚框架的作用。

為什麼 PHP 有了 Thread 還需要 Swoole ?匿名使用者2018-02-19 19:14:31

swoole提供多執行緒,協程以及執行緒安全的佇列只是他眾多功能的一小部分。

實際上swoole的tcp伺服器,websocket伺服器,http伺服器底層使用了epoll等io多路複用器,這個在純php中是無法呼叫的。只能透過swoole擴充套件來間接呼叫unix底層的epoll這個io多路複用器實現提供高併發的server服務。

為什麼 PHP 有了 Thread 還需要 Swoole ?蕭東2018-02-20 09:23:00

先抖個機靈: php 有那麼多已經封裝好的函數了,為啥還有那麼多的框架出現呢?

抖機靈完畢。

回答完畢。

為什麼 PHP 有了 Thread 還需要 Swoole ?莊嚴2018-02-20 22:21:16

一 ,PHP執行緒是真執行緒(對應作業系統的執行緒api,當然,不是對應到CPU),這樣的執行緒無法(至少是不合適於)同時大量存在(比如同一秒內同時存在一萬個執行緒在各幹各活),因此大量任務還是需要排隊處理,於是需要佇列。(看到題主在另一個回答的評論裡提為什麼還要佇列,故從佇列說起。)

二,當需要併發處理的事情太多,完全藉助多執行緒(或加上多程序)很不合適時,偽裝併發就是個好架構。比如“排好排”火車站某一瞬間有一萬個人要買票。“排好排”車站驕傲地說:“沒事,本站支援多視窗售票”。於是開了一萬個視窗,售票大樓 坍塌。

三,售票視窗雖然多個,但數目保持一定限制,然後每個視窗之前排佇列,事實上這就是一種非同步架構,只是可以再最佳化。比如某個視窗(執行緒)前面佇列為空時,架構能安排其它隊伍的人切換過來。是一種最佳化。但更美妙的最佳化是,視窗有多個,但隊伍只有一條,哪個視窗空閒,隊頭的任務就去那個視窗接受服務。

四,程式設計行業沒有新鮮事,一切都是演算法而已。