ThreadPool(執行緒池)

2021-09-02 01:10:49 字數 1024 閱讀 9175

任務後台基礎:執行緒池。建立執行緒需要時間。如果有不同的短任務要完成,就可以事先建立許多執行緒,在應完成這些任務時發出請求,這個執行緒最好在需要更多的執行緒時增加,在需要釋放資源時減少。 

不需要自己建立這樣的乙個列表,該錶由threadpool類託管,這個類會在需要時增減池中線程的執行緒數,直到達到最大執行緒數。池中的最大執行緒數是可配置的。在4核cpu中,預設設定為1023個工作執行緒,和1000個i/o執行緒,也可以指定在建立執行緒池時立即啟動最小執行緒數,以及執行緒池中可用的最大執行緒數。如果有更多的作業需要處理,執行緒池中的執行緒的個數達到了極限,最新的作業就要排隊,且必須等待執行緒完成其他任務。

下面的圖中的方法queueuserworkitem()用傳遞委託

**如下:

static void main()

,"+"i/o completion threads:",nworkerthreads,ncompletionportthreads);

for (int i = 0; i <5; i++)

console.readkey();

}static void jobforthread(object state)

", thread.currentthread.isthreadpoolthread);

console.writeline("loop ,running inside pooled thread ",i,thread.currentthread.managedthreadid);

thread.sleep(5);}}

執行程式時,可以看到1023個工作執行緒的當前設定。5個任務由4個執行緒池中的執行緒處理,(因為這是乙個四核系統) 

執行緒池使用起來很簡單,但它有一些限制:

執行緒池 Thread Pool

烽驛2009開源實時通訊平台 原始碼獲取 svn checkouthttp fy2009.googlecode.com svn trunk fy2009 read only 眾所周知,執行緒並非越多越好,理論上乙個cpu 或core 乙個活動執行緒可獲得最佳效能。執行緒池可根據具體硬體的情況 如cp...

ThreadPool 執行緒池

最近在做通訊的專案,裡面需要使用點執行緒池,這裡做下筆記,歡迎指點!執行緒池功能 應用程式可以有多個執行緒,net框架為每個程序提供了乙個執行緒池,乙個執行緒池有若干個等待操作狀態,當乙個等待操作完成時,執行緒池中的輔助線程會執行 函式。執行緒池中的執行緒由系統管理,程式設計師不需要費力於執行緒管理...

ThreadPool 執行緒池 c

正文 threadpool 執行緒池 是乙個靜態類,它沒有定義任何的構造方法 我們只能夠使用它的靜態方法,這是因為threadpool是託管執行緒池,是由clr管理的。threadpool使用waitcallback委託,它所要做的工作是在後台進行的。使工作項的排隊和執行更容易,可以給工作者執行緒傳...