.net - .NET 4.0线程池中有哪些改进?

标签 .net multithreading threadpool .net-4.0

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

在32位环境中的Framework 4.0中的

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

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

    过去,我们对线程池的大小设置了合理的限制,因为似乎存在一个“甜蜜点”,此后,由于上下文切换,我们的应用程序速度变慢了。自然,我们将在更新目标框架后进行压力测试并重新进行基准测试。但是,有谁能对启用更大线程池的框架进行哪些改进有所了解?还是只是MS增加默认值看起来令人印象深刻?

    最佳答案

    上下文切换的问题尚未解决(由于其性质属于OS)。但是,如果使用ThreadPool进行上下文切换(异步),则上下文无关紧要。由于新的TPL及其必须解决的其他一些需求,.NET ThreadPool调度程序得到了改进。

    尝试从CLR 4.0 ThreadPool Improvements开始

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

    关于.net - .NET 4.0线程池中有哪些改进?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3958972/

    相关文章:

    java - 线程池中的线程局部内存泄漏

    .net - 将变量设置为模块

    c# - 如何将 RIFF block 数据写入使用 NAudio 制作的 WAV 文件?

    c# - 防止环境变量扩展

    python - 试验 python 线程,如何停止线程

    java - 如何使用 servlet 运行长时间运行的进程

    c++ - 将 boost::asio io_service 用于具有周期性任务的线程池?

    .net - 使用 log4net 发送日志文件的最佳方法

    c# - 遇到锁时如何停止线程?

    c++ - boost 线程池