锁定线程时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
...
}
答案 0 :(得分:1)
当然这是错误的:
QMutexLocker(&mutex);
因为它会创建一个临时互斥锁,它会在语句结束时锁定和解锁。
这里:
QMutexLocker locker(&mutex);
您正在创建一个QMutexLocker
类型的对象,名为locker,它锁定互斥锁并在超出范围时将其解锁。