QReadLocker 和 QWriteLocker 的目的是简化 QReadWriteLock 的锁定和解锁。锁定和解锁语句或异常处理代码中容易出错且难以调试。 在这种情况下可以使用 QReadLocker 和 QWriteLocker 来确保读写锁的状态始终是明确定义的。
QReadLocker
下面是一个使用 QReadLocker 锁定和解锁读写锁进行读取的示例:
QReadWriteLock lock;
QByteArray readData()
{
QReadLocker locker(&lock);
...
return data;
}
它等效于以下代码:
QReadWriteLock lock;
QByteArray readData()
{
lock.lockForRead();
...
lock.unlock();
return data;
}
QWriteLocker
下面是一个使用 QWriteLocker 锁定和解锁读写锁的例子:
QReadWriteLock lock;
void writeData(const QByteArray &data)
{
QWriteLocker locker(&lock);
...
}
它等效于以下代码:
QReadWriteLock lock;
void writeData(const QByteArray &data)
{
lock.lockForWrite();
...
lock.unlock();
}