使用執行緒池 3

2021-07-25 20:10:45 字數 1481 閱讀 4363

對比建立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...