[英]Thread Pool and it thread provide
我的代碼是
static void Main(string[] args)
{
for (int i = 0; i < 100; i++)
{
ThreadPool.QueueUserWorkItem(y =>
{
Console.WriteLine(Thread.CurrentThread.ManagedThreadId);
Thread.Sleep(3000);
});
}
Console.Read();
}
當我啟動程序並查看sos.dll時,我可以看到每次線程池為我提供4-5個線程。 由於池未分配更多線程,因此會發生延遲。 為什么會這樣呢?
每個進程只有一個線程池。 從.NET Framework 4開始,進程的線程池的默認大小取決於幾個因素,例如虛擬地址空間的大小。 進程可以調用GetMaxThreads方法來確定線程數。 可以使用SetMaxThreads方法更改線程池中的線程數。 每個線程使用默認堆棧大小,並以默認優先級運行。
另外要注意的是,取決於系統資源(如CPU內核,RAM等),更多線程可能不會使您的應用程序運行得更快。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.