mutex_type* release() noexcept;
概要
ミューテックスの所有権を放棄する。
この関数を実行することで、shared_lock
オブジェクトはミューテックスのアンロック責任を放棄する。この関数を実行したユーザーは、自分でミューテックスをアンロックする必要がある。
事後条件
- 保持しているミューテックスオブジェクトへのポインタが
NULL
になること owns_lock() == false
になること
戻り値
保持しているミューテックスオブジェクトへのポインタを返す
例外
投げない
例
#include <shared_mutex>
int main()
{
std::shared_timed_mutex mtx;
{
std::shared_lock<std::shared_timed_mutex> lock(mtx);
// lockが保持するミューテックスの所有権を放棄する
// (lockオブジェクトのデストラクタでunlock_shared()が呼ばれなくなる)
std::shared_timed_mutex* p = lock.release();
// 所有権を持つユーザーが、自分でミューテックスのロックを手放す
p->unlock_shared();
}
}
出力
バージョン
言語
- C++14
処理系
- Clang: 3.5 ✅
- GCC: 4.9 ✅
- ICC: ??
- Visual C++: 2015 ✅