Linux多執行緒伺服器 優化

2021-10-04 13:34:05 字數 535 閱讀 2540

例1 使用多執行緒提高響應速度

假設我們有乙個類似計算器的服務,輸入數字公式,返回相應的結果,如果無解,返回「null\r\n」。

假設小明在很短的時間內發出10個請求,如果用單執行緒來乙個處理乙個,那麼這些請求會在佇列裡依次處理。假設乙個請求響應時間是10ms,那麼第二個請求響應時間將會為20ms(等第乙個請求執行完才執行第二個)。那麼第十個請求響應時間為100ms。那麼這10個請求的平均響應時間為55ms。

ok,採用多執行緒:1個主線程,10個計算執行緒。主線程將請求分別分配給10個計算執行緒,那麼這10個請求的平均響應時間將為10ms。很顯然,比單執行緒快了不少。

例2 io和「計算」相互重疊

基本思路:無論是磁碟io還是網路io,只要涉及到io,那都是比較慢的,那麼就可以將io操作交給別的執行緒去去做,自己不必久等待。

採用同步方式會降低效能,因為:

解決方法:單獨開乙個執行緒來負責寫磁碟檔案。別的執行緒寫日誌,只需要將訊息準備好,然後交給queue,基本不用等待,降低了伺服器響應時間

linux 多執行緒聊天伺服器

自己寫的linux多執行緒聊天伺服器,可以實現併發,通過鍊錶新增人數。include include include include include include include include include include include typedef struct client typed...

多執行緒伺服器

posix執行緒庫 a 與執行緒有關的函式都構成了乙個完整的系列,絕大多數函式的名字都是以 pthread 打頭的。b 要使用這些庫函式,要引入標頭檔案。c 鏈結這些執行緒庫函式時要使用編譯命令的 lpthread 選項。int pthread create pthread t thread,con...

多執行緒時間伺服器

include stdafx.h include include include include include define port 8080 int x 1 void error char str dword winapi new client proc lpvoid lpparam prin...