マルチスレッドアプリケーションがあります。現在の実装では、スレッド1 は起動時に作成され、定期的に (1 秒ごと、構成可能) ウェイクアップして、潜在的な保存ファイルのディスクをチェックします。これらのファイルは、別のスレッドthread2によって保存されます。その実行中のスレッド 1とその定期的なウェイクアップにより、アプリケーションの速度が低下する可能性があります。
これで、 boost ::condition 変数を使用して、スレッド 2が通知するまでスレッド 1をブロックすることができます。そうすることで、スレッド 2からの不必要な通知を避けるためにフラグを作成する必要があり、そのフラグを同期して、スレッド 2 によって高頻度 (数秒で数百回) でチェックする必要があります。または、書き込みが発生するたびにスレッド 1 に通知されます。
ここでの私の質問は次のとおりです。
boost::condition の実装では、フラグをチェックするためにスレッド1 を頻繁に起動する必要があります。違いは、実装が隠されていることですが、実際にはそうなっています。私は正しいですか?Windows と Java の同様の API は同じことを行いますか?
スレッドが待機状態ではないにもかかわらず、何度も頻繁に通知されるとどうなりますか?
私の場合、boost::condition の実装に切り替えることで、全体的なパフォーマンスが向上しますか? 私の意見はNo.