将Threadpool中的最大线程数设置为小于核心

时间:2011-03-16 19:38:42

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

“您无法将工作线程数或I / O完成线程数设置为小于计算机中处理器数量的数字。”Threadpool.SetMaxThreads)< / p>

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

3 个答案:

答案 0 :(得分:2)

似乎你应该尝试限制有权访问该资源的线程数,而不是通过锁定或票证来完成的线程总数

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

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

ThreadPool.SetMinThreads(1, 1);
ThreadPool.SetMaxThreads(2,2);
在QuadCore机器上,它似乎正确地限制了线程执行,如果我省略了SetMinThreads调用,它忽略了我对SetMaxThreads的调用(因为你不能将MaxThreads设置为小于MinThreads(默认为#core) ))

相关问题