QMutexLocker没有锁定QMutex

时间:2012-03-07 18:22:46

标签: c++ qt

锁定线程时QMutexLocker无法正常工作。

  • 答案:

    void foo() {
         // QMutexLocker(&mutex); // wrong, it will not just lock and unlock
         QMutexLocker locker(&mutex); // right, it will lock until the 'locker' scope ends
         ...
    }
    

1 个答案:

答案 0 :(得分:1)

当然这是错误的:

QMutexLocker(&mutex);

因为它会创建一个临时互斥锁,它会在语句结束时锁定和解锁。

这里:

QMutexLocker locker(&mutex);

您正在创建一个QMutexLocker类型的对象,名为locker,它锁定互斥锁并在超出范围时将其解锁。