1

QProcessいくつかを並行して開始し、すべてが終了するまでブロックしたいと思います。

QProcess*それぞれをベクトルに入れて、finished()信号をカウンターに接続することを考えています。メイン スレッド ビジーは、カウンターがベクトルのサイズに達するまで待機します。

ただし、カウンターがスレッドセーフではない可能性があり、非常に効率的ではないことが懸念されます。

4

2 に答える 2

1

絶対に でカウンターを守るべきQMutexです。

また、効率に問題はないと思います。あなたが恐れているのは何ですか?

隠れた潜在的な問題が 1 つありますが、プロセスがfinished()シグナルを発信しない場合があります。たとえば、起動できなかった場合QProcess::error()はコードで出力QProcess::FailedToStartされ、クラッシュした場合はコードでエラーが出力されQProcess::Crashedます。どちらの場合も、スレッドは永遠に待機します。

于 2013-04-09T17:56:30.630 に答える