Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ QMutexLocker未锁定QMutex_C++_Qt - Fatal编程技术网

C++ QMutexLocker未锁定QMutex

C++ QMutexLocker未锁定QMutex,c++,qt,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 ... } 这是错误的: QMutexLocker(&mutex

锁定线程时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
      类型的对象,该对象锁定互斥锁,并在互斥锁超出范围时解除锁定。

      对此有问题吗?看起来您已经理解了。第一个不是错误,它是完全有效的,尽管可能不是预期的:它创建了一个临时锁柜,用于锁定互斥锁。问题是,在声明结束时,锁柜立即被销毁,互斥锁也被解锁。@FrankOsterfeld谢谢。我尝试了其他方法(因为在这台电脑上我没有安装qt),但失败了,我认为上面的方法无法编译。