void unlock();
概要
共有ロックを手放す
効果
pm->unlock_shared();
※pm
はメンバ変数として保持している、ミューテックスオブジェクトへのポインタ
事後条件
owns_lock() == false
戻り値
なし
例外
この関数は、以下のerror conditionを持つsystem_error
例外オブジェクトを送出する可能性がある:
operation_not_permitted
:owns_lock() == false
の状態でこの関数が呼び出された
例
#include <cassert>
#include <shared_mutex>
int main()
{
std::shared_timed_mutex mtx;
{
// 共有ロックを取得する
std::shared_lock<std::shared_timed_mutex> lock(mtx);
// 共有ロックを手放す
lock.unlock();
assert(lock.owns_lock() == false);
} // すでに共有ロックを手放しているので、
// デストラクタではunlock_sharedされない
}
xxxxxxxxxx
#include <cassert>
#include <shared_mutex>
int main()
{
std::shared_timed_mutex mtx;
{
// 共有ロックを取得する
std::shared_lock<std::shared_timed_mutex> lock(mtx);
// 共有ロックを手放す
lock.unlock();
assert(lock.owns_lock() == false);
} // すでに共有ロックを手放しているので、
// デストラクタではunlock_sharedされない
}
出力
バージョン
言語
- C++14
処理系
- Clang: 3.5 ✅
- GCC: 4.9 ✅
- ICC: ??
- Visual C++: 2015 ✅