Повторное использование QMutex и QWaitCondition - PullRequest
1 голос
/ 07 марта 2011

Можно ли повторно использовать объекты QMutex + QWaitCondition? У меня есть метод ожидания завершения некоторых потоков.

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

waitCondition.wakeOne () вызывается в другом потоке.

Первый вызов FinishWait () работает, но второй вызов не возвращается, даже если указать тайм-аут.

1 Ответ

4 голосов
/ 07 марта 2011

Предполагая, что "mutex" и "qMutex" означают одну и ту же переменную (в противном случае это не имеет особого смысла), вам нужно разблокировать мьютекс после возвращения wait ().

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

...