重用QMutex和QWaitCondition

时间:2011-03-07 10:06:03

标签: qt qt4 nokia carbide

QMutex + QWaitCondition对象是否可重用? 我有一个等待一些线程完成的方法。

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

在另一个线程上调用waitCondition.wakeOne()。

对FinishWait()的第一次调用有效,但即使我指定超时,第二次调用也不会返回。

1 个答案:

答案 0 :(得分:4)

假设“mutex”和“qMutex”表示相同的变量(否则没有多大意义),您需要在wait()返回后解锁互斥锁。

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