Skip to content

Latest commit

 

History

History
24 lines (21 loc) · 1.04 KB

QMutex.md

File metadata and controls

24 lines (21 loc) · 1.04 KB

Qt互斥锁QMutex、QMutexLocker的使用

  • 互斥锁(QMutex)在使用时需要在进入和结束的时候使用对应的函数锁定和解锁。

  • QMutexLocker通常创建为局部变量,QMutexLocker在创建时传入一个并未锁定(若是锁定可用relock重新锁定或unlock解锁)的QMutex指针变量,并且会将QMutex变量锁定,在释放时会将QMutex变量解锁。(QMutexLocker创建时将传入的QMutex锁定,释放时将传入的QMutex解锁)

  • QMutex的使用

      void CThread::run()
      {
          //互斥锁锁定
          m_mutex->lock();
          //输出当前线程的线程ID
          qDebug() << QThread::currentThreadId();
          //互斥锁解锁
          m_mutex->unlock();
      }
    
  • QMutexLocker的使用

      void CThread::run()
      {
          //创建QMutexLocker的局部变量,并将类中互斥锁指针传入(此处互斥锁被locker锁定)
          QMutexLocker locker(m_mutex);
          qDebug() << QThread::currentThreadId();
          //当locker作用域结束locker将互斥锁解锁
      }