Класс QWriteLocker
Класс QWriteLocker — это вспомогательный класс, который упрощает блокировку и разблокировку чтено-записных блоков для записи. Подробнее...
| Заголовок: | #include <QWriteLocker> |
| qmake: | QT += core |
Примечание: Все функции в этом классе являются безопасными для потоков.
Открытые функции
| QWriteLocker(QReadWriteLock *lock) | |
| ~QWriteLocker() | |
| QReadWriteLock * | readWriteLock() const |
| void | relock() |
| void | unlock() |
Подробное описание
Класс QWriteLocker — это вспомогательный класс, который упрощает блокировку и разблокировку чтено-записных блоков для записи.
Цель 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 показывает примеры, где использование объекта блокировки значительно упрощает программирование.
См. также QReadLocker и QReadWriteLock.
Документация по функциям-членам
QWriteLocker::QWriteLocker(QReadWriteLock *lock)
Конструирует QWriteLocker и блокирует lock для записи. Блокировка будет разблокирована при уничтожении QWriteLocker. Если lock равно нулю, QWriteLocker ничего не делает.
См. также QReadWriteLock::lockForWrite().
QWriteLocker::~QWriteLocker()
Уничтожает QWriteLocker и разблокирует блокировку, которая была передана в конструктор.
См. также QReadWriteLock::unlock().
QReadWriteLock *QWriteLocker::readWriteLock() const
Возвращает указатель на чтено-записной блок, который был передан в конструктор.
void QWriteLocker::relock()
Переблокирует разблокированную блокировку.
См. также unlock().
void QWriteLocker::unlock()
Разблокирует блокировку, связанную с этой блокировкой.
См. также QReadWriteLock::unlock().
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/archives/qt-5.11/qwritelocker.html