如何防止线程中的无限循环占用所有CPU资源?

时间:2012-11-22 21:35:00

标签: .net multithreading cpu cpu-usage

我编写了一个.NET应用程序,它会生成一个无限循环的线程,因为它会检查以确保某些条件为真。任务管理器显示,在生成此线程的那一刻,应用程序使用几乎所有可用的CPU资源,只要线程运行,这就是应用程序的生命周期。

如何防止此线程使用如此多的CPU资源?

2 个答案:

答案 0 :(得分:3)

防止消耗CPU的最佳方法是等到所需条件为真。使用某种同步原语来协调您的线程。一个事件将是一个良好的开端。

答案 1 :(得分:1)

如果您必须等待来自其他线程的数据,请使用监视器: http://msdn.microsoft.com/de-de/library/system.threading.monitor%28v=vs.80%29.aspx

如果不可能,您可以考虑在while循环中添加一个睡眠,例如10ms。 这应该有所帮助。

while(true) {
     //Do something here
     Thread.Sleep(10); //Don't consume whole CPU
}

另请参阅以下相关帖子:Thread.Sleep or Thread.Yield