1

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

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

waitCondition.wakeOne() 在不同的线程上调用。

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

4

1 回答 1

4

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

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

于 2011-03-07T10:32:46.533 回答