執行緒池與並行度

2022-04-12 10:27:07 字數 1725 閱讀 6332

展示執行緒池如何工作於大量的非同步操作,以及它與建立大量單獨的執行緒的方式有什麼不同。

using

system;

using

system.text;

using

system.threading;

using

system.threading.tasks;

using

system.diagnostics;

namespace

test

); t1.start();

}countdown.wait();//主線程一開始在這裡停止並等待,countdownevent計數減少到0的時候,這裡主線程開始執行}}

private

static

void usethreadpool(int

count));}

countdown.wait();}}

//////

向執行緒池放入非同步操作

/// static

void

main()

- 計數:

", sw.elapsedmilliseconds, sw.elapsedticks);

});codetimer.time(

"usethreadpool

", iteration, () => - 計數:

", sw2.elapsedmilliseconds, sw2.elapsedticks);

});console.writeline(

"執行完成");

console.readline();

}//////

當前執行緒資訊

/// private

static

void currentthreadinfo(string

name)

執行緒id:\t\t

", name, thread.currentthread.managedthreadid));

"是否使用執行緒池:\t

", name, thread.currentthread.isthreadpoolthread));

"是否後台執行緒:\t

", name, thread.currentthread.isbackground));

"執行緒狀態:\t\t

", name, thread.currentthread.threadstate.tostring()));

"", name, datetime.now.tostring("

yyyy-mm-dd hh:mm:ss

")));

"");

console.writeline(builder.tostring());}}

}

工作原理:

當主程式啟動時,建立了很多不同的執行緒,每個執行緒都執行乙個操作。該操作列印出線程id並阻塞執行緒100毫秒。結果我們建立了500個執行緒,全部並行執行這些操作。雖然在我的機器上的總耗時是300毫秒,但是所有執行緒消耗了大量的作業系統資源

然後我們使用了執行同樣的任務,只不過部位每個操作建立乙個執行緒,兒將他們放入到執行緒池中。然後執行緒池開始執行這些操作。執行緒池在快結束時建立更多的執行緒,但是仍然花費了更多的時間,在我機器上是12秒。我們為作業系統節省了記憶體和執行緒數,但是為此付出了更長的執行時間。

java 執行緒與並行

額外加裝cpu執行流程的進入點,有兩種方法 class tortoise implements runnable class hare implements runnable 在主流程中啟動執行緒執行額外流程 public class newtest class tortoisethread ext...

執行緒池與程序池

從python3.2開始,標準庫為我們提供了concurrent.futures模組,它提供了threadpoolexecutor和processpoolexecutor兩個類,實現了對threading和multiprocessing的更高階的抽象,是使用非同步實現,充分利用cpu提高程式執行效率...

執行緒池與程序池

為什麼要裝到容器中 可以避免頻繁的建立和銷毀 程序 執行緒 來的資源開銷 可以限制同時存在的執行緒數量 以保證伺服器不會應為資源不足而導致崩潰 幫我們管理了執行緒的生命週期 管理了任務的分配 from concurrent.futures import threadpoolexecutor,proc...