無標題文件
|
|
網頁寄存
在.NET 2.0 SP 1隨著.NET 3.5發佈後線程池發生了重大的變化。不過據Michael C. Kennedy發現,並非所有的改變都是最合適的。
第一個變化是將最大線程數從每處理器25個線程增加至250個線程。這麼做是為了處理線程池中的死鎖,當太多線程等待其他任務結束時就會出現死鎖。一旦所有25個線程都被阻塞的時候,等待中的任務就無法分配到線程了。儘管這個改變無法徹底排除死鎖的可能性,但是發生問題的概率大大減小的。
另一個改變其實是一個Bug。一般來說.NET會盡快在線程池中分配最少數量的線程,接著每秒鐘創建最多2個線程,直到達到最大線程數量。如果您知道您的應用程序會立即使用大量線程池的線程,您必須提高最小線程數量。
Michael C. Kennedy發現在.NET 2.0 Service Pack 1中,最少線程數量被忽略了。如果一個應用程序需要大量的線程池的線程,它可能會需要幾秒鐘才能夠完全啟動。
據Michael C. Kennedy所說,他所聯繫到的微軟員工稱這個問題會在.NET 2.0 SP 2中解決,不過其發佈日期還不確定。
查看英文原文:Breaking Changes in the .NET ThreadPool
web design
|