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 に答える