【问题标题】:threads in a threadpool线程池中的线程
【发布时间】:2010-08-16 23:09:50
【问题描述】:

我一直在阅读有关线程池的信息。许多站点说线程池上的默认最大线程数是 25(每个处理器)。但是我没有修改最大线程数,当我这样做时:

Threadpool.GetAvailableThreads(out WorkThreads, out compPortThreads);

我得到 500,1000。我正在运行一台双核电脑,所以预计不会超过 50 个。

我的池子里真的有 500、1000 个吗??

谢谢 约翰

【问题讨论】:

    标签: c# threadpool


    【解决方案1】:

    这在版本之间有所不同:

    来自the documentation of the ThreadPool class in Visual Studio 2005

    每个进程有一个线程池。线程池的默认大小为每个可用处理器 25 个线程。

    来自the documentation of the ThreadPool class in Visual Studio 2010

    每个进程有一个线程池。线程池的默认大小为每个可用处理器 250 个工作线程,以及 1000 个 I/O 完成线程。

    作为一个有趣的旁注:对于 Visual Studio 2008,English documentation 承诺 250 个工作线程,而 German translation 只给你 25 个。啊,错误翻译的乐趣......

    【讨论】:

      【解决方案2】:

      每个处理器的默认线程数在不同版本之间发生了显着变化。

      相信在运行时获得的值。

      current documentation 声明:

      每个进程有一个线程池。 线程池的默认大小为 每个可用 250 个工作线程 处理器和 1000 I/O 完成 线程。

      【讨论】:

        【解决方案3】:

        该方法返回可以启动的线程数,而不是当前正在运行的线程数。你读到的关于 25 是最大值的信息已经过时了。我不确定哪个版本,但线程池限制显着提高以避免死锁问题,主要是由于开发人员不知道他们在做什么,恕我直言。

        【讨论】:

          猜你喜欢
          • 2019-01-29
          • 2010-09-18
          • 2012-02-22
          • 2010-10-11
          • 2018-10-02
          • 1970-01-01
          • 2019-08-12
          • 2011-07-11
          相关资源
          最近更新 更多