QWriteLocker Class

QWriteLocker 是便捷类, 它简化了对读写锁, 写访问的的锁定和解锁. More...

头文件: #include <QWriteLocker>
qmake: QT += core

Note: All functions in this class are thread-safe.

公有函数

QWriteLocker(QReadWriteLock *lock)
~QWriteLocker()
QReadWriteLock *readWriteLock() const
void relock()
void unlock()

详细描述

QWriteLocker (和 QReadLocker) 的目的是简化 QReadWriteLock 的锁定和解锁. 锁定和解锁语句, 异常处理代码是很容易出错的, 而且很难调试. QWriteLocker 可以确保在此类情况下, 锁的状态始终定义良好.

下面是一个使用 QWriteLocker 锁定和解锁读写锁的示例:

 QReadWriteLock lock;

 void writeData(const QByteArray &data)
 {
     QWriteLocker locker(&lock);
     ...
 }

等价于以下代码:

 QReadWriteLock lock;

 void writeData(const QByteArray &data)
 {
     lock.lockForWrite();
     ...
     lock.unlock();
 }

QMutexLocker 文档展示了使用locker对象来大大简化编程的示例.

另见 QReadLockerQReadWriteLock.

Member Function Documentation

QWriteLocker::QWriteLocker(QReadWriteLock *lock)

Constructs a QWriteLocker and locks lock for writing. The lock will be unlocked when the QWriteLocker is destroyed. If lock is zero, QWriteLocker does nothing.

See also QReadWriteLock::lockForWrite().

QWriteLocker::~QWriteLocker()

Destroys the QWriteLocker and unlocks the lock that was passed to the constructor.

See also QReadWriteLock::unlock().

QReadWriteLock *QWriteLocker::readWriteLock() const

Returns a pointer to the read-write lock that was passed to the constructor.

void QWriteLocker::relock()

Relocks an unlocked lock.

See also unlock().

void QWriteLocker::unlock()

Unlocks the lock associated with this locker.

See also QReadWriteLock::unlock().