Reusing QMutex and QWaitCondition

2.1k views Asked by At

Are QMutex+QWaitCondition objects reusable? I have a method to wait for some threads to complete.

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

The waitCondition.wakeOne() is called on a different Thread.

The first call to FinishWait() works but the the second call doesn't return even if I specify timeout.

1

There are 1 answers

2
Gunther Piez On BEST ANSWER

Assuming "mutex" and "qMutex" mean the same variable (it doesn't make much sense otherwise), you need to unlock the mutex after the wait() returns.

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