簡體   English   中英

.NET 線程池是否應該在啟動時創建最少數量的工作線程?

[英]Should .NET thread-pool create the minimum amount of worker threads at start-up?

給定一個托管在 Windows server 2008r2、IIS 7.5、集成池、.net 4.0 CLR、64 位上的 ASMX 服務應用程序。 它幾乎是異步的並且廣泛使用 TPL 庫。

假設 .NET 線程池最小工作線程配置為 N 強制在啟動時創建 N 個工作線程是否正確?

我期待這種行為,但它不會發生或間歇性發生。

以下是有關配置的詳細信息:Machine.config 部分將其屬性“minWorkerThreads”設置為 100,以便使用最小 100*CPUcount(假設 4 核桌面為 400)工作線程來初始化線程池。

在服務應用程序啟動 ThreadPool 之后。 GetMinThreads (out minWorkerThreadsCount, out minIoThreadsCount) 按預期顯示minWorkerThreadsCount為 400

盡管如此,調試“線程”窗口僅顯示與任務管理器相同的60 個線程 看起來線程池會回退到默認行為,但minWorkerThreadsCount仍然是 400。

關於什么可以觸發這種行為或減少運行時線程數的任何想法? 據稱,當應用程序是在面向 .NET 4.0 的 .NET 4.5 運行時中構建時,會出現此問題。

我將不勝感激任何輸入。

不。它會快速增長到這個數字,而不是從那么多線程開始。

請參閱我高亮顯示的ThreadPool.SetMinThreads部分:

在切換到用於管理線程創建和銷毀的算法之前設置線程池按需創建的最小線程數,在發出新請求時

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM