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()
スレッドが保持する書込みロックを解放します。
読み取りでロックを取得します。書き込みですでにロックが取得されていたらスピンします。
読み取りロック (非ブロッキング) の取得を試みます。読み取りでロックが取得された場合は true、その他の場合は false を返します。
スレッドが保持する読み取りロックを解放します。