【问题标题】:What has improved in .NET 4.0 Threadpooling?.NET 4.0 线程池有哪些改进?
【发布时间】:2011-04-26 21:59:25
【问题描述】:

我正在阅读一本 C# 4.0 书籍,该书为线程池的最大线程限制提供了以下默认值。

  • Framework 4.0 中 32 位环境中的 1023
  • 32768 在 64 位环境中的 Framework 4.0 中
  • Framework 3.5 中每个核心 250 个
  • Framework 2.0 中每个内核 25 个

谁能告诉我是什么可能导致默认值大幅增加,尤其是 64 位?上下文切换的问题解决了吗?

过去,我们对线程池的大小设置了合理的限制,因为似乎存在一个最佳点,在此之后我们的应用程序由于上下文切换而变慢。自然,我们会在更新目标框架后进行压力测试和重新基准测试。但是任何人都可以了解为启用更大的线程池而进行了哪些框架改进?还是只是 MS 增加了默认值以看起来令人印象深刻?

【问题讨论】:

    标签: .net multithreading threadpool .net-4.0


    【解决方案1】:

    上下文切换问题未解决(由于其性质属于操作系统)。但是,当您使用 ThreadPool 以正确方式(异步)进行时,上下文切换就不是问题了。由于新的 TPL 和它必须解决的其他一些需求,.NET ThreadPool 调度程序得到了改进。

    尝试以CLR 4.0 ThreadPool Improvements开头

    还要检查:Throttling Concurrency in the CLR 4.0 ThreadPool 和这个great video

    【讨论】:

    • 谢谢尼克。这很有帮助。
    【解决方案2】:

    它经过调整以更好地在现代 Big Iron 上运行。具有超过 64 个 CPU 内核的机器,这种硬件。显然,他们在上下文切换方面遇到的麻烦更少。他们添加到调度器的反馈循环很有趣,它收集统计数据以做出更好的调度决策。但是,在您首先获得主要硬件之前,这些东西不会发挥作用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-20
      • 2011-02-27
      相关资源
      最近更新 更多