1

QMutex+QWaitCondition オブジェクトは再利用可能ですか? 一部のスレッドが完了するのを待つ方法があります。

void FinishWait()
{
    mutex.lock();
    waitCondition(&qMutex, ULONG_MAX);
}

waitCondition.wakeOne() は別のスレッドで呼び出されます。

FinishWait() への最初の呼び出しは機能しますが、タイムアウトを指定しても 2 番目の呼び出しは返されません。

4

1 に答える 1

4

「mutex」と「qMutex」が同じ変数を意味すると仮定すると (それ以外の場合はあまり意味がありません)、wait() が戻った後にミューテックスのロックを解除する必要があります。

void FinishWait()
{
    mutex.lock();
    waitCondition.wait(&mutex);
    mutex.unlock();
}

于 2011-03-07T10:32:46.533 に答える