Класс QReadLocker
Класс QReadLocker — это вспомогательный класс, упрощающий блокировку и разблокировку блокировок чтения-записи для чтения. Подробнее...
| Заголовок: | #include <QReadLocker> |
| qmake: | QT += core |
Примечание: Все функции в этом классе являются безопасными для потоков.
Общедоступные функции
| QReadLocker(QReadWriteLock *lock) | |
| ~QReadLocker() | |
| QReadWriteLock * | readWriteLock() const |
| void | relock() |
| void | unlock() |
Подробное описание
Класс QReadLocker — это вспомогательный класс, упрощающий блокировку и разблокировку блокировок чтения-записи для чтения.
Цель QReadLocker (и QWriteLocker) — упростить блокировку и разблокировку QReadWriteLock. Блокирующие и разблокирующие инструкции или в коде обработки исключений могут быть небезопасными и трудно отлаживаемыми. QReadLocker может использоваться в таких ситуациях, чтобы гарантировать, что состояние блокировки всегда определено.
Вот пример использования QReadLocker для блокировки и разблокировки блокировки чтения-записи для чтения:
QReadWriteLock lock;
QByteArray readData()
{
QReadLocker locker(&lock);
...
return data;
} Это эквивалентно следующему коду:
QReadWriteLock lock;
QByteArray readData()
{
lock.lockForRead();
...
lock.unlock();
return data;
} Документация QMutexLocker содержит примеры, где использование объекта-замочного класса значительно упрощает программирование.
См. также QWriteLocker и QReadWriteLock.
Документация по функциям-членам
QReadLocker::QReadLocker(QReadWriteLock *lock)
Создаёт QReadLocker и блокирует lock для чтения. Блокировка будет разблокирована, когда QReadLocker будет уничтожен. Если lock равно нулю, QReadLocker ничего не делает.
См. также QReadWriteLock::lockForRead().
QReadLocker::~QReadLocker()
Уничтожает QReadLocker и разблокирует блокировку, которая была передана в конструктор.
См. также QReadWriteLock::unlock().
QReadWriteLock *QReadLocker::readWriteLock() const
Возвращает указатель на блокировку чтения-записи, которая была передана в конструктор.
void QReadLocker::relock()
Переблокирует разблокированную блокировку.
См. также unlock().
void QReadLocker::unlock()
Разблокирует блокировку, связанную с этим замочным классом.
См. также QReadWriteLock::unlock().
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.12/qreadlocker.html