このページでは

QReadLocker Class

QReadLocker クラスは、読み取りアクセス用の読み書きロックのロックおよびロック解除を簡略化する便利クラスです。詳細...

ヘッダー: #include <QReadLocker>
CMake: find_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake: QT += core

注:このクラスのすべての関数はスレッドセーフです。

パブリック関数

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

詳細な説明

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 が 0 の場合、QReadLocker は何も行いません。

QReadWriteLock::lockForRead()も参照してください 。

[noexcept] QReadLocker::~QReadLocker()

QReadLocker を破棄し、コンストラクタに渡されたロックを解除します。

QReadWriteLock::unlock()も参照してください 。

QReadWriteLock *QReadLocker::readWriteLock() const

コンストラクタに渡された読み書きロックのポインタを返します。

void QReadLocker::relock()

ロックが解除されているロックを再ロックします。

unlock()も参照してください 。

void QReadLocker::unlock()

このロッカーに関連付けられたロックを解除します。

QReadWriteLock::unlock()も参照してください 。

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.