Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
QProcessいくつかを並行して開始し、すべてが終了するまでブロックしたいと思います。
QProcess
QProcess*それぞれをベクトルに入れて、finished()信号をカウンターに接続することを考えています。メイン スレッド ビジーは、カウンターがベクトルのサイズに達するまで待機します。
QProcess*
finished()
ただし、カウンターがスレッドセーフではない可能性があり、非常に効率的ではないことが懸念されます。
絶対に でカウンターを守るべきQMutexです。
QMutex
また、効率に問題はないと思います。あなたが恐れているのは何ですか?
隠れた潜在的な問題が 1 つありますが、プロセスがfinished()シグナルを発信しない場合があります。たとえば、起動できなかった場合QProcess::error()はコードで出力QProcess::FailedToStartされ、クラッシュした場合はコードでエラーが出力されQProcess::Crashedます。どちらの場合も、スレッドは永遠に待機します。
QProcess::error()
QProcess::FailedToStart
QProcess::Crashed