一、概述
QReadLocker(和QWriteLocker) 的目的是简化 QReadWriteLock 的锁定和解锁。锁定和解锁语句或异常处理代码容易出错,难以调试。在这种情况下可以使用QReadLocker来确保锁的状态总是定义良好的。
QReadLocker 应该在需要锁定 QReadWriteLock 的函数中创建。当创建 QReadLocker 时,互斥锁被锁定。可以使用unlock() 和 relock() 对互斥量进行解锁和重新锁定。如果锁住了,那么当 QReadLocker 被销毁时,QReadWriteLock 将被解锁。
二、使用
下面是一个使用QReadLocker来锁定和解锁读写锁的示例:
QReadWriteLock lock;
QByteArray readData()
{
QReadLocker locker(&lock);
...
return data;
}
它等价于下面的代码:
QReadWriteLock lock;
QByteArray readData()
{
lock.lockForRead();
...
lock.unlock();
return data;
}
Qt扫盲-QReadLocker理论使用总结 博客展示了使用locker简化编程的例子。