簡體   English   中英

線程池及其提供的線程

[英]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個線程。 由於池未分配更多線程,因此會發生延遲。 為什么會這樣呢?

ThreadPool類

每個進程只有一個線程池。 從.NET Framework 4開始,進程的線程池的默認大小取決於幾個因素,例如虛擬地址空間的大小。 進程可以調用GetMaxThreads方法來確定線程數。 可以使用SetMaxThreads方法更改線程池中的線程數。 每個線程使用默認堆棧大小,並以默認優先級運行。

另外要注意的是,取決於系統資源(如CPU內核,RAM等),更多線程可能不會使您的應用程序運行得更快。

暫無
暫無

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

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