1

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

如何防止这个线程使用这么多的 CPU 资源?

4

2 回答 2

3

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

于 2012-11-22T21:39:14.107 回答
1

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

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

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

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

于 2012-11-22T21:36:50.257 回答