基本的に、入力を(ネットワークモジュールを介して)読み取り、それらを処理した後にイベントを生成する監視/制御ソフトウェアを開発しています。
入力は通信速度に依存する可能性があり、マルチスレッドで実行できますが、処理は基本的に連続ループです。
while (true)
{
readInputs();
process();
}
これは非常に簡単に思えますが、ご想像のとおり、CPU は 100% になります。また、主に時限イベントのために、他のループを実行したい場合。そのため、プロセスは最後にスリープすることができますが、時限イベントはできません。
私の質問は、アプリが完全な CPU サイクルを消費することなく、入力を収集して処理するための最良の方法は何ですか?
更新 1: アプリケーションはマルチスレッドであり、ユーザー インターフェイスを備えています。ユーザーインターフェイスを更新するためにタイマーが適用されます(共有メモリから - 処理されたものと入力ステータス)。while ループは、入力の読み取りと処理に使用されます。