rw_mutex

[mutex.rw_mutex]

rw_mutex は、適応型アプローチによってReaderWriterMutex 要件をモデル化するクラスであり、ロックが取得できないスレッドがブロックする前にスピンすることを保証します。rw_mutex クラスは、ISO C++ 標準の [thread.sharedmutex.requirements] セクションで説明されるミューテックスの要件をすべて満たしています。rw_mutex クラスは、ライター優先のアンフェアなリーダー/ライターロックです。


// <oneapi/tbb/rw_mutex.h> ヘッダーで定義 

namespace oneapi { 
    namespace tbb { 
        class rw_mutex { 
        public: 
            rw_mutex() noexcept; 
            ~rw_mutex(); 

            rw_mutex(const rw_mutex&) = delete; 
            rw_mutex& operator=(const rw_mutex&) = delete; 

            class scoped_lock; 

            // exclusive ownership 
            void lock(); 
            bool try_lock(); 
            void unlock(); 

            // shared ownership 
            void lock_shared(); 
            bool try_lock_shared(); 
            void unlock_shared(); 

            static constexpr bool is_rw_mutex = true; 
            static constexpr bool is_recursive_mutex = false; 
            static constexpr bool is_fair_mutex = false; 
        }; 
    } 
}

メンバークラス

class scoped_lock

対応するスコープ付きロッククラス。ReaderWriterMutex の要件参照してください。

メンバー関数

rw_mutex()

アンロックされた rw_mutex を作成します。


~rw_mutex()

アンロックされた rw_mutexを破棄します。


void lock()

ロックを取得します。待機に適用型ロジックを使用するため、一定時間のビジー状態が経過した後にブロックされます。


bool try_lock()

書き込み時にロック (非ブロッキング) の取得を試みます。成功すると true を、それ以外は false を返します。


void unlock()

スレッドが保持する書込みロックを解放します。


void lock_shared()

読み取りでロックを取得します。待機に適用型ロジックを使用するため、一定時間のビジー状態が経過した後にブロックされます。


bool try_lock_shared()

読み取りでロック (非ブロッキング) の取得を試みます。成功すると true を、それ以外は false を返します。


void unlock_shared()

スレッドが保持する読み取りロックを解放します。