1. 程式人生 > 其它 >Linux高效能伺服器程式設計—程序池和執行緒池

Linux高效能伺服器程式設計—程序池和執行緒池

1. 池的概念
池的描述和定義:Pool(池)的概念被廣泛的應用在伺服器端軟體的開發上。使用池結構可以明顯的提高你的應用程式的速度,改善效率和降低系統資源的開銷。所以在應用伺服器端的開發中池的設計和實現是開發工作中的重要一環。

那麼到底什麼是池呢?我們可以簡單的想象一下應用執行時的環境,當大量的客戶併發的訪問應用伺服器時我們如何提供服務呢?我們可以為每一個客戶提供一個新的服務物件進行服務。這種方法看起來簡單,在實際應用中如果採用這種實現會有很多問題,顯而易見的是不斷的建立和銷燬新服務物件必將給造成系統資源的巨大開銷,導致系統的效能下降。針對這個問題我們採用池的方式。池可以想象成就是一個容器儲存著各種我們需要的物件。我們對這些物件進行復用,從而提高系統性能。從結構上看,它應該具有容器物件和具體的元素物件。從使用方法上看,我們可以直接取得池中的元素來用,也可以把我們要做的任務交給它處理。

2. 動態建立程序(或子執行緒)來實現伺服器的缺點
(1)動態建立程序(或執行緒)是比較耗費時間的,這將導致較慢的客戶響應。
(2)動態建立的子程序(或子執行緒)通常只用來為一個客戶服務(除非我們做特殊的處理),這將導致系統上產生大量的細微程序(或執行緒),程序(或執行緒)間的切換將消耗大量CPU時間。
(3)動態建立的子程序是當前程序的完整映像。當前程序必須謹慎地管理其分配的檔案描述符和堆記憶體等系統資源,否則子程序可能複製這些資源,從而使系統的可用資源急劇下降,進而影響伺服器的效能。

3. 程序池和執行緒池概述