2010-10-18 49 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核心的机器,即那种硬件。显然,它们在上下文切换时没有什么问题。他们添加到调度程序的反馈循环很有趣,收集统计信息以作出更好的调度决策。但是这些东西只有在你掌握了主要硬件之后才会启动。