“您无法将工作线程数或I / O完成线程数设置为小于计算机中处理器数量的数字。”(Threadpool.SetMaxThreads)< / p>
如果我需要更少的线程(我使用的资源不支持来自一个进程的超过4个线程),该怎么办?有没有办法将8芯盒子的最大值设置为4? 我正在使用C#中的任务。
答案 0 :(得分:2)
似乎你应该尝试限制有权访问该资源的线程数,而不是通过锁定或票证来完成的线程总数
答案 1 :(得分:0)
是的,Microsoft有这样的要求,即线程数不能小于处理器数。更多信息here。
我很想知道为什么微软有这样的要求?应该是无害的不是吗?这个要求没有意义......
答案 2 :(得分:0)
刚尝试了这个,这个“要求”似乎是不正确的。我相信它只是默认将MinThreads设置为你机器中的核心数。 如果我这样做:
ThreadPool.SetMinThreads(1, 1);
ThreadPool.SetMaxThreads(2,2);
在QuadCore机器上,它似乎正确地限制了线程执行,如果我省略了SetMinThreads调用,它忽略了我对SetMaxThreads的调用(因为你不能将MaxThreads设置为小于MinThreads(默认为#core) ))