我在我的应用程序中使用QReadWriteLock来保护对资源对象的访问。
我尽可能使用 QReadLocks 和 QWriteLocks,但有时我需要一个跨越函数边界的“长寿命”锁。所以有时我需要能够查询 QReadWriteLock(或 QMutex,在这种情况下也是如此)的状态,因为解锁已经解锁的互斥锁非常糟糕。
对于 QMutex:
解锁未锁定的互斥锁会导致未定义的行为。
对于 QReadWriteLock:
尝试解锁未锁定的锁是错误的,将导致程序终止。
能够查询互斥锁的状态也非常方便调试断言在开始某些操作之前测试,我确实拥有那个“长寿命”锁。
但我真正想要的只是如果我有锁就能够解锁互斥锁,如果我没有锁就不能解锁它。那会让我很开心。IMO 该unlock()
功能应该已经为我执行此操作,但事实并非如此。
有什么办法吗?
(不,Recursive
在这种情况下使用模式没有帮助)