マルチスレッド アプリケーションで UI (および完全な OS) の応答性を維持する必要がある場所の間で問題に直面しています。
複数のストリームから同時に多くのビデオ フレームを受信して変換するアプリケーション (c++ および Qt ベース) を開発しています。
各ストリームは、(DirectX を使用して) 独自の個別のワーカー スレッドで取得、変換、およびレンダリングされます。つまり、フレームのレンダリングにデフォルトの GUI スレッドを使用していないということです。
強力なコンピューターでは、CPU がすべてのデータを処理し、GUI スレッドがユーザーの要求を処理する時間を確保できるため、問題はありません。しかし、古いコンピューターでは機能せず、データを処理するために CPU が 100% 使用され、UI が遅くなり、ボタンのクリックが処理されるまでに 10 秒かかる場合があります。
UI の応答性を維持したいと考えています。実際、他に実行するアクションがない場合にのみ、ワーカー スレッドが機能するようにしたいと考えています。ワーカー スレッドの優先度を低く変更しようとしましたが、うまくいきません。ワーカースレッドでsleep(10)も試してみたのですが、スレッド数が多いので同時にスリープ状態にならないのでうまくいきません。
その場合 (ツールキットが何を使用していても) UI の応答性を維持する最善の方法は何ですか?