我在写一个multithreading的c ++应用程序。 当线程A有一个非常昂贵的计算操作来执行时,会减慢线程B,C和D.如何防止这种情况?
在Windows上,您可以使用Sleep(0)
来释放剩余的时间片给正在等待的其他线程。
很难说没有看到代码,所以我只能给你建议降低线程A的优先级。 这可以使用SetThreadPriority函数完成。
请注意,您可以设置线程优先级( SetThreadPriority
)
另外,我建议后台工作者从队列中选择它的工作。 队列然后可以用来限制计算:
$ 0.02
有几种方法:
Sleep(0)
以使其产生更频繁的时间。 这是便宜和懒惰的解决方案。 CreateThread
,请传递CREATE_SUSPENDED
以便线程不会立即启动。 然后调用SetPriorityClass
将线程设置为较低的优先级,然后是ResumeThread
。 你可能也想看看让你的计算绑定线程产生处理器到其他线程。 看到这个职位的各种方法来做到这一点。