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()
スレッドが保持する書込みロックを解放します。
読み取りでロックを取得します。待機に適用型ロジックを使用するため、一定時間のビジー状態が経過した後にブロックされます。
読み取りでロック (非ブロッキング) の取得を試みます。成功すると true を、それ以外は false を返します。
スレッドが保持する読み取りロックを解放します。