【发布时间】:2011-03-16 19:38:42
【问题描述】:
“您不能将工作线程数或 I/O 完成线程数设置为小于计算机中处理器数的数字。” (Threadpool.SetMaxThreads)
如果我需要更少的线程(我正在使用的资源不支持来自一个进程的超过 4 个线程)怎么办?有没有办法将 8 芯盒的最大值设置为 4? 我在 C# 中使用任务。
【问题讨论】:
标签: .net visual-studio-2010 c#-4.0
“您不能将工作线程数或 I/O 完成线程数设置为小于计算机中处理器数的数字。” (Threadpool.SetMaxThreads)
如果我需要更少的线程(我正在使用的资源不支持来自一个进程的超过 4 个线程)怎么办?有没有办法将 8 芯盒的最大值设置为 4? 我在 C# 中使用任务。
【问题讨论】:
标签: .net visual-studio-2010 c#-4.0
看来您应该尝试限制可以访问该资源的线程数,而不是可以通过锁定或票证来完成的线程总数
【讨论】:
是的,微软有这样的要求,即线程数不能小于处理器数。更多信息here。
我很想知道为什么微软有这样的要求?应该是无害的吧?这个要求没有意义……
【讨论】:
刚刚试了一下,这个“要求”似乎不正确。我相信默认情况下它只是将 MinThreads 设置为您机器中的核心数。 如果我这样做:
ThreadPool.SetMinThreads(1, 1);
ThreadPool.SetMaxThreads(2,2);
在 QuadCore 机器上,它似乎正确地限制了线程执行,但如果我忽略了 SetMinThreads 调用,它会忽略我对 SetMaxThreads 的调用(因为您不能将 MaxThreads 设置为小于 MinThreads(默认情况下是内核数) ))
【讨论】: