spin_rw_mutex

[mutex.spin_rw_mutex]

spin_rw_mutex は、ReaderWriterMutex 要件をモデル化し、[thread.sharedmutex.requirements] ISO C++ セクションの共有ミューテックス・タイプのすべての要件を満たすクラスです。

spin_rw_mutex クラスは、バックオフとライター優先のアンフェアなスピンタイプのリーダー・ライター・ロックです。


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

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

        spin_rw_mutex(const spin_rw_mutex&) = delete; 
        spin_rw_mutex& operator=(const spin_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; 
    }; 
} // namespace tbb 
} // namespace oneapi

メンバークラス

class scoped_lock

scoped-lock クラスに相当。ReaderWriterMutex の要件を参照してください。

メンバー関数

spin_rw_mutex()

ロック解除された spin_rw_mutex を作成します。

~spin_rw_mutex()

ロック解除された spin_rw_mutex を破棄します。

void lock()

ロックを取得します。ロックが取得できたらスピンします。

bool try_lock()

書き込みでロック (非ブロッキング) の取得を試みます。書き込みでロックが取得された場合は true、その他の場合は false を返します。

void unlock()

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

void lock_shared()

読み取りでロックを取得します。書き込みですでにロックが取得されていたらスピンします。

bool try_lock_shared()

読み取りロック (非ブロッキング) の取得を試みます。読み取りでロックが取得された場合は true、その他の場合は false を返します。

void unlock_shared()

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