對比建立500個執行緒和將500個執行緒放入執行緒池中。發現建立500個執行緒消耗了大量的作業系統資源,消耗的時間段;而把執行緒放到執行緒池中節省了記憶體和執行緒數,但是執行的時間變長了。
using system;
using system.diagnostics;
using system.threading;
namespace 執行緒池與並行度
", sw.elapsedmilliseconds);
sw.reset();//停止計時並且將計時值清零
sw.start();
userthreadpool(numberofoperation);
sw.stop();
console.writeline("excution time using threads: ", sw.elapsedmilliseconds);
console.readkey();
}private
static
void
usethreads(int numberofoperation)
,",thread.currentthread.managedthreadid);
thread.sleep(timespan.fromseconds(0.1));
countdown.signal();//向countdownevent註冊訊號,減少currentcount屬性的值.
});thread.start();
}countdown.wait();//無限期阻塞當前執行緒,直到currentcount屬性的值為零
console.writeline();}}
private
static
void
userthreadpool(int numberofoperation)
,",thread.currentthread.managedthreadid);
thread.sleep(timespan.fromseconds(0.1));
countdown.signal();
});}
countdown.wait();
console.writeline();}}
}}
countdownevent類可以用來同步執行緒countdownevent(int number)初始化,signal()向countdownevent註冊訊號,減少currentcount屬性的值,countdown.wait()無限期阻塞當前執行緒,直到currentcount屬性的值為零
stopwatch類,提供一組用於精確計時的方法和屬性,start()開始計時,reset()停止計時並且將計時值清零,stop()結束計時,elapsedmilliseconds屬性獲取計時值,以毫秒計。
備註:學習《multithreading in c# 5.0 cookbook》eugene agafonov著的總結,以備日後查詢。
c c 執行緒 3執行緒池
最近一段時間在看linux下c語言的多執行緒,其中乙個比較重要的應用就是執行緒池。自己也參照著網上的資料寫了乙個簡單的執行緒池。這裡做以總結。我們的應用在任何時候都要準備應對數目巨大的連線請求,同時,這些請求所要完成的任務卻又可能非常的簡單,即只占用很少的處理時間。總之執行緒池通常適合下面的幾個場合...
執行緒池使用
1.定義乙個執行緒池,用來執行實現callable介面的任務類.當阻塞佇列新添乙個任務類時,將while迴圈新增設定乙個變數startexcute,當阻塞佇列新添第乙個任務時,將startexcute設定為true,並呼叫excutetaskcall方法,使用執行緒池執行阻塞佇列的任務。當阻塞隊列為...
執行緒池使用
一 執行緒池的構造器 public threadpoolexecutor int corepoolsize,int maximumpoolsize,long keepalivetime,timeunit unit,blockingqueueworkqueue,threadfactory thread...