最近在做通訊的專案,裡面需要使用點執行緒池,這裡做下筆記,歡迎指點!
執行緒池功能
應用程式可以有多個執行緒,.net框架為每個程序提供了乙個執行緒池,乙個執行緒池有若干個等待操作狀態,當乙個等待操作完成時,執行緒池中的輔助線程會執行**函式。執行緒池中的執行緒由系統管理,程式設計師不需要費力於執行緒管理,可以集中精力處理應用程式任務。
執行緒池的作用
我們在使用ado.net連線sql server時,.net框架就會自動幫我們維護乙個連線池,這就是因為重新建立乙個連線的代價相對比較高昂,「復用」就顯得比較划算了。不過有些朋友可能會說,我們明明是每次都建立乙個sqlconnection物件,**有「復用」啊?這是因為.net框架中把「連線池」做透明了,對於程式設計師完全隱藏了這個概念。每次我們雖然建立的是新的sqlconnection物件,但是這個物件內部占用的「資料庫連線」還是會復用的。為什麼總是強調用完sqlconnection物件後要及時「關閉」(dispose或close)呢?其實這裡並沒有斷開資料庫連線,只是把這個連線放回了連線池。等到下次建立新的sqlconnection物件時,這個連線又可以拿出來用了。
下面是乙個簡單的執行緒池例子
public
static
void
threadusepool()
console.readline();
}public
static
void
callback(
object
index)
: "
, now, index));
thread.sleep(
20000
);console.writeline(string.format(":
", now, index));
console.readline();
}public
static
void
threadusepool()
console.readline();
}public
static
void
callback(
object
index)
: "
, now, index));
thread.sleep(
20000
);console.writeline(string.format(":
", now, index));
console.readline();
}總結:
最小執行緒數量為5時,只有4個執行緒可以立即執行。經過進一步嘗試,最小執行緒數量為10時,也只有9個執行緒可以立即執行。
執行緒池建立執行緒的速度並非永遠是「每秒2個」, 每秒不超過2個 的確是確切的說法。
執行緒池 Thread Pool
烽驛2009開源實時通訊平台 原始碼獲取 svn checkouthttp fy2009.googlecode.com svn trunk fy2009 read only 眾所周知,執行緒並非越多越好,理論上乙個cpu 或core 乙個活動執行緒可獲得最佳效能。執行緒池可根據具體硬體的情況 如cp...
ThreadPool(執行緒池)
任務後台基礎 執行緒池。建立執行緒需要時間。如果有不同的短任務要完成,就可以事先建立許多執行緒,在應完成這些任務時發出請求,這個執行緒最好在需要更多的執行緒時增加,在需要釋放資源時減少。不需要自己建立這樣的乙個列表,該錶由threadpool類託管,這個類會在需要時增減池中線程的執行緒數,直到達到最...
ThreadPool 執行緒池 c
正文 threadpool 執行緒池 是乙個靜態類,它沒有定義任何的構造方法 我們只能夠使用它的靜態方法,這是因為threadpool是託管執行緒池,是由clr管理的。threadpool使用waitcallback委託,它所要做的工作是在後台進行的。使工作項的排隊和執行更容易,可以給工作者執行緒傳...