【问题标题】:Set the maximum number of threads in the Threadpool less than cores将 Threadpool 中的最大线程数设置为小于 cores
【发布时间】:2011-03-16 19:38:42
【问题描述】:

“您不能将工作线程数或 I/O 完成线程数设置为小于计算机中处理器数的数字。” (Threadpool.SetMaxThreads)

如果我需要更少的线程(我正在使用的资源不支持来自一个进程的超过 4 个线程)怎么办?有没有办法将 8 芯盒的最大值设置为 4? 我在 C# 中使用任务。

【问题讨论】:

    标签: .net visual-studio-2010 c#-4.0


    【解决方案1】:

    看来您应该尝试限制可以访问该资源的线程数,而不是可以通过锁定或票证来完成的线程总数

    【讨论】:

      【解决方案2】:

      是的,微软有这样的要求,即线程数不能小于处理器数。更多信息here

      我很想知道为什么微软有这样的要求?应该是无害的吧?这个要求没有意义……

      【讨论】:

        【解决方案3】:

        刚刚试了一下,这个“要求”似乎不正确。我相信默认情况下它只是将 MinThreads 设置为您机器中的核心数。 如果我这样做:

        ThreadPool.SetMinThreads(1, 1);
        ThreadPool.SetMaxThreads(2,2);
        

        在 QuadCore 机器上,它似乎正确地限制了线程执行,但如果我忽略了 SetMinThreads 调用,它会忽略我对 SetMaxThreads 的调用(因为您不能将 MaxThreads 设置为小于 MinThreads(默认情况下是内核数) ))

        【讨论】:

          猜你喜欢
          • 2012-12-23
          • 1970-01-01
          • 1970-01-01
          • 2010-12-23
          • 2018-01-27
          • 2020-11-28
          • 2012-06-19
          • 2017-07-21
          • 2012-08-31
          相关资源
          最近更新 更多