QRecursiveMutex 类

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

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

该类在 Qt 5.14 引入。

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

公共函数

QRecursiveMutex ()
~QRecursiveMutex ()

详细描述

QRecursiveMutex 类是互斥,像 QMutex , with which it is API-compatible. It differs from QMutex by accepting lock () calls from the same thread any number of times. QMutex would deadlock in this situation.

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 ()

Constructs a new recursive mutex. The mutex is created in an unlocked state.

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

QRecursiveMutex:: ~QRecursiveMutex ()

销毁互斥。

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