reader_writer_lock クラス

概要

スケーラブルで、ライターを優先する PPL 互換のリーダー/ライター mutex。

構文

class reader_writer_lock;

ヘッダー

#include "tbb/reader_writer_lock.h"

説明

reader_writer_lock は、PPL 互換のリーダー/ライター mutex を実装します。reader_writer_lock はスケーラブルです。再帰的ではありません。ライターがリーダーよりも優先されることを除いて、ロックのリクエストを先着順に処理します。スレッドが reader_writer_lock の取得を待つ必要がある場合、ビジーウェイトを行うため、ウェイトが長くなるとシステムのパフォーマンスに影響します。しかし、ウェイトが短い場合、reader_writer_lock は、ほかの mutex よりも大幅にパフォーマンスを向上させます。

reader_writer_lock は、ReaderWriterMutex コンセプトの一部と C++11 互換インターフェイスの一部をモデル化します。主な違いは次のとおりです。

メンバー

namespace tbb {
    class reader_writer_lock {
    public:
        reader_writer_lock();
        ~reader_writer_lock();
        void lock();
        void lock_read();
        bool try_lock();
        bool try_lock_read();
        void unlock();
         class scoped_lock {
        public:
            scoped_lock( reader_writer_lock& mutex );
            ~scoped_lock();
        };
        class scoped_lock_read {
        public:
            scoped_lock_read( reader_writer_lock& mutex );
            ~scoped_lock_read();
        };
   };}

次の表は、このクラスのメンバーを要約したものです。

reader_writer_lock メンバーの概要

メンバー

意味

reader_writer_lock()

ロックしていない mutex を構築します。

~reader_writer_lock()

ロックしていない mutex を破棄します。

void reader_writer_lock::lock()

mutex のライターロックを取得します。

void reader_writer_lock::lock_read()

mutex のリーダーロックを取得します。

bool reader_writer_lock::try_lock()

mutex のライターロックを取得しようとします。ロックが取得された場合は true、その他の場合は false を返します。

bool reader_writer_lock::try_lock_read()

mutex のリーダーロックを取得しようとします。ロックが取得された場合は true、その他の場合は false を返します。

reader_writer_lock::unlock()

ロックを解放します。

reader_writer_lock::scoped_lock   (reader_writer_lock& m)

mutex m のライターロックを取得します。

reader_writer_lock::~scoped_lock()

ライターロックを解放します (取得している場合)。

reader_writer_lock::scoped_lock_read   (reader_writer_lock& m)

mutex m のリーダーロックを取得します。

reader_writer_lock::~scoped_lock_read()

リーダーロックを解放します (取得している場合)。

関連情報