網路程式設計 多執行緒和多程序的選擇

2021-10-06 15:33:57 字數 606 閱讀 1096

多執行緒還是多程序的選擇及區別

1)需要頻繁建立銷毀的優先用執行緒

原因請看上面的對比。

這種原則最常見的應用就是web伺服器了,來乙個連線建立乙個執行緒,斷了就銷毀執行緒,要是用程序,建立和銷毀的代價是很難承受的

2)需要進行大量計算的優先使用執行緒

所謂大量計算,當然就是要耗費很多cpu,切換頻繁了,這種情況下執行緒是最合適的。

這種原則最常見的是影象處理、演算法處理。

3)強相關的處理用執行緒,弱相關的處理用程序

什麼叫強相關、弱相關?理論上很難定義,給個簡單的例子就明白了。

一般的server需要完成如下任務:訊息收發、訊息處理。「訊息收發」和「訊息處理」就是弱相關的任務,而「訊息處理」裡面可能又分為「訊息解碼」、「業務處理」,這兩個任務相對來說相關性就要強多了。因此「訊息收發」和「訊息處理」可以分程序設計,「訊息解碼」、「業務處理」可以分執行緒設計。

當然這種劃分方式不是一成不變的,也可以根據實際情況進行調整。

4)可能要擴充套件到多機分布的用程序,多核分布的用執行緒

原因請看上面對比。

多程序多執行緒的選擇

關於多程序和多執行緒,教科書上最經典的一句話是 程序是資源分配的最小單位,執行緒是cpu排程的最小單位 這句話應付考試基本上夠了,但如果在工作中遇到類似的選擇問題,那就沒有這麼簡單了,選的不好,會讓你深受其害。經常在網路上看到有的xdjm問 多程序好還是多執行緒好?linux下用多程序還是多執行緒?...

多程序多執行緒的選擇

程序是作業系統分配資源 cpu時間 記憶體 的基本單位,執行緒是排程執行的基本單元。乙個執行緒必定屬於乙個程序,乙個程序可包含多個執行緒。nginx redis是常見的多程序模型,tomcat memcached是多執行緒模型。多程序資料共享複雜,需要用管道,訊號,訊息佇列,共享記憶體,套接字等通訊...

Linux網路程式設計(3) 多程序 多執行緒

在我的 多程序 這裡多程序採用傳統的多程序模型。每當有client發來的連線時建立乙個程序來處理連線,乙個子程序相應乙個連線。有了上篇單一程序的基礎,此處僅僅做簡單的改動便能夠實現。while 1 close clientfd 僅僅須要在while裡面加入程序的建立就可以,然後在子程序裡先關閉父程序...