QRecursiveMutex 类

QRecursiveMutex 类提供在线程之间串行化访问。 更多...

头: #include <QRecursiveMutex>
qmake: QT += core
Since: Qt 5.14
继承: QMutex (private)

该类在 Qt 5.14 引入。

注意: 此类的所有函数 thread-safe .

公共函数

QRecursiveMutex ()
~QRecursiveMutex ()

详细描述

QRecursiveMutex 类是互斥的像 QMutex ,采用可兼容 API。它不同于 QMutex 通过接受 lock () 调用来自同一线程任意次数。 QMutex 在这种情况下,会死锁。

QRecursiveMutex is much more expensive to construct and operate on, so use a plain QMutex whenever you can. Sometimes, one public function, however, calls another public function, and they both need to lock the same mutex. In this case, you have two options:

  • Factor the code that needs mutex protection into private functions, which assume that the mutex is held when they are called, and lock a plain QMutex in the public functions before you call the private implementation ones.
  • Or use a recursive mutex, so it doesn't matter that the first public function has already locked the mutex when the second one wishes to do so.

另请参阅 QMutex , QMutexLocker , QReadWriteLock , QSemaphore ,和 QWaitCondition .

成员函数文档编制

QRecursiveMutex:: QRecursiveMutex ()

构造新的递归互斥。互斥是在解锁状态下创建的。

另请参阅 lock () 和 unlock ().

QRecursiveMutex:: ~QRecursiveMutex ()

销毁互斥。

警告: 销毁锁定互斥可能导致未定义行为。