本節書摘來自華章出版社《c#多線程程式設計實戰(原書第2版)》一書中的第3章,第3.4節,作者(美)易格恩·阿格佛溫(eugene agafonov),黃博文 黃輝蘭 譯,更多章節内容可以通路雲栖社群“華章計算機”公衆号檢視。
本節将展示線程池如何工作于大量的異步操作,以及它與建立大量單獨的線程的方式有何不同。
為了學習本節,你需要安裝visual studio 2015。除此之外無需其他準備。本節的源代碼放置在booksampleschapter3recipe3目錄中。
請執行以下步驟來了解線程池如何工作于大量的異步操作,以及它與建立大量單獨的線程的方式的不同之處:
1.啟動visual studio 2015。建立一個c#控制台應用程式項目。
2.在program.cs檔案中加入以下using指令:

3.在main方法下面加入以下代碼片段:
4.在main方法中加入以下代碼片段:
5.運作程式。
當主程式啟動時,建立了很多不同的線程,每個線程都運作一個操作。該操作列印出線程id并阻塞線程100毫秒。結果我們建立了500個線程,全部并行運作這些操作。雖然在我的機器上的總耗時是300毫秒,但是所有線程消耗了大量的作業系統資源。
然後我們使用同樣的工作流,隻不過不為每個操作建立一個線程,而将它們放入到線程池中。然後線程池開始執行這些操作。線程池在快結束時建立更多的線程,但是仍然花費了更多的時間,在我的機器上是12秒。我們為作業系統節省了記憶體和線程數,但是為此付出了更長的執行時間。