任務後台基礎:執行緒池。建立執行緒需要時間。如果有不同的短任務要完成,就可以事先建立許多執行緒,在應完成這些任務時發出請求,這個執行緒最好在需要更多的執行緒時增加,在需要釋放資源時減少。
不需要自己建立這樣的乙個列表,該錶由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委託,它所要做的工作是在後台進行的。使工作項的排隊和執行更容易,可以給工作者執行緒傳...