私は現在、いくつかの部分で構成されるシステムを (再) 設計しています:
- 最初の部分は、ソースからフレームを (非同期的に) 取得し、フレームの準備が整うたびに Qt シグナルを介してイベントを発生させるエンティティです。
- 2 番目の部分は、フレームをリアルタイムで表示する GUI であり、スロットによって上記の信号に接続されています。
- 最後の部分は、GUI からの数種類の信号に応答する可能性のあるシーケンシャル アルゴリズム (while、for など) によって動作が最もよく記述されるフレーム プロセッサです。
主な質問は、そのようなコードを整理するためのベスト プラクティスがあるかどうかです。
私が思いつき、あまり好きではない解決策は、4つのスレッドを実行することです。
- Qt シグナルを介して他の 3 つのスレッドと通信する GUI スレッド
- フレームが利用可能になるたびにシグナルを送信するフレーム ソース スレッド。
- シグナル時にフレームを格納し、QWaitCondition を使用してフレーム プロセッサ スレッドに通知するフレーム オーガナイザー スレッド。
- フレーム オーガナイザから getNextFrame() を呼び出すフレーム プロセッサ スレッド。
しかし、おそらく異なるパラダイム(待機条件とシグナル)が混在しているため、これは良い解決策ではないと思います。さらに、条件付きで待機すると、イベント処理キューが枯渇する可能性があります。