- shared_mutex[meta header]
- std[meta namespace]
- shared_lock[meta class]
- function[meta id-type]
- cpp14[meta cpp]
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();
}
}- release()[color ff0000]
- std::shared_timed_mutex[link /reference/shared_mutex/shared_timed_mutex.md]
- p->unlock_shared()[link /reference/shared_mutex/shared_timed_mutex/unlock_shared.md]
- C++14
- Clang: 3.5 [mark verified]
- GCC: 4.9 [mark verified]
- ICC: ??
- Visual C++: 2015 [mark verified]