2010-10-18 74 views
1

我正在閱讀C#4.0手冊,其中給出了線程池的最大線程限制的以下默認值。.NET 4.0線程池有哪些改進?

  • 1023在框架4.0在32位的環境
  • 在Framework 4.0
  • 32768在64位的環境
  • 250每個核心在Framework 3.5
  • 25每個核心在Framework 2.0

任何人都可以告訴我什麼可能會促使如此大幅增加的默認值,特別是對於64位?上下文切換問題是否已解決?

過去,我們對線程池的大小設置了合理的限制,因爲似乎有一個甜蜜點,之後我們的應用程序由於上下文切換而變慢。自然,我們將在更新目標框架之後進行壓力測試並重新進行基準測試。但任何人都可以闡明爲了實現更大的線程池而進行了哪些框架改進?還是隻是MS增加默認設置看起來令人印象深刻?

回答

3

上下文切換問題未解決(由於其本質屬於OS)。但是,當你使用ThreadPool上下文切換正確的方式(異步)不是問題。由於新的TPL和其他需要解決的問題,.NET ThreadPool調度程序得到了改進。

嘗試啓動CLR 4.0 ThreadPool Improvements

同時檢查:Throttling Concurrency in the CLR 4.0 ThreadPoolgreat video

+0

謝謝尼克。這非常有幫助。 – 2010-10-18 16:15:08

+0

很高興爲您效勞 – 2010-10-18 17:47:06

1

它被調整,以現代大鐵效果更好。具有超過64個CPU核心的機器,即那種硬件。顯然,它們在上下文切換時沒有什麼問題。他們添加到調度程序的反饋循環很有趣,收集統計信息以作出更好的調度決策。但是這些東西只有在你掌握了主要硬件之後纔會啓動。