QRcursiveMutex
QRcursiveMutex类提供线程间的访问序列化。更多…
属性 | 内容 |
---|---|
头文件 | #include<QRcursiveMutex> |
qmake | QT += core |
加入版本 | Qt 5.14 |
继承自 | QMutex(private) |
注意: 此类中所有函数都是线程安全的。
公共成员函数
返回类型 | 函数 |
---|---|
QRecursiveMutex() | |
~QRecursiveMutex() |
详细描述
QRecursiveMutex
类是一个互斥体,与 QMutex 类似,与之API兼容。它与 QMutex
的不同之处在于,它可多次接受来自同一线程的 lock() 调用。QMutex
在这种情况下会死锁。QRecursiveMutex
的构造和操作成本要高很多,因此尽可能使用纯 QMutex
。然而,有时一个公共函数调用另一个公共函数,它们都需要锁定同一个互斥体。在这种情况下,您有两个选项:
- 将需要互斥锁保护的代码分解到私有函数中,私有函数假设在调用互斥体时 保留互斥体,并在调用私有实现函数之前在公共函数中锁定一个纯QMutex。
- 或者使用递归互斥锁,所以第二个公共函数希望锁定互斥锁,与第一个公共函数是否锁定没有多大关系了。
另请参阅: QMutex,QMutexLocker,QReadWriteLock,QSemaphore 和 QWaitCondition。
成员函数文档
QRecursiveMutex::QRecursiveMutex()
构造一个新的递归互斥锁。互斥锁是在解锁状态下创建的。
QRecursiveMutex::~QRecursiveMutex()
析构。
警告:销毁锁定的互斥锁可能会导致未定义的行为。