QMutexLocker not locking QMutex

QMutexLocker not locking QMutex

本文关键字:QMutex locking not QMutexLocker      更新时间:2023-10-16

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
         ...
    }
    

当然这是错误的:

QMutexLocker(&mutex);

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

此处:

QMutexLocker locker(&mutex);

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