我正在编写一个多线程c ++应用程序。当线程A执行的计算成本非常高时,它会减慢线程B,C和D.如何防止这种情况?
答案 0 :(得分:2)
在Windows上,您可以使用Sleep(0)
为正在等待的其他线程释放剩余的时间片。
答案 1 :(得分:0)
很难说没有看到代码所以我只能给你建议降低线程A的优先级。这可以使用SetThreadPriority函数完成。
答案 2 :(得分:0)
请注意,您可以设置线程优先级(SetThreadPriority
)
另外,我建议backgroundworker从队列中选择它的工作。然后可以将队列用作限制计算的方法:
$ 0.02
答案 3 :(得分:0)
有几种方法:
Sleep(0)
以使其更频繁地产生时间。这是便宜而懒惰的解决方案。CreateThread
时,请传递CREATE_SUSPENDED
,以便线程不会立即启动。然后调用SetPriorityClass
将线程设置为较低的优先级,然后调用ResumeThread
。答案 4 :(得分:0)
您可能还希望查看让计算绑定的线程将处理器转移到其他线程。有关执行此操作的各种方法,请参阅this post。