<mutex>
関数および変数
adopt_lock
lock_guard と unique_lock のコンストラクターに渡されるオブジェクトを表し、同じコンストラクターに渡されるミューテックス オブジェクトがロックされていることを示します。
const adopt_lock_t adopt_lock;
call_once
指定された呼び出し可能オブジェクトが、実行中に 1 回だけ呼び出されるメカニズムを提供します。
template <class Callable, class... Args>
void call_once(once_flag& Flag,
Callable F&&, Args&&... A);
パラメーター
フラグ
呼び出し可能オブジェクトが 1 回だけ呼び出されるようにする once_flag オブジェクト。
F
呼び出し可能オブジェクト。
A
引数リスト。
解説
Flag が有効でない場合、関数はエラー コードが invalid_argument
である system_error をスローします。 それ以外の場合、テンプレート関数は Flag 引数を使用して、テンプレート関数が呼び出される回数に関係なく F(A...)
が 1 回だけ呼び出されるようにします。 F(A...)
が例外をスローして終了した場合、呼び出しは失敗です。
defer_lock
unique_lock のコンストラクターに渡すことができるオブジェクトを表します。 これは、コンストラクターに渡される mitex オブジェクトをコンストラクターがロックしてはならないことを示します。
const defer_lock_t defer_lock;
lock
デッドロックなしですべての引数をロックしようとします。
template <class L1, class L2, class... L3>
void lock(L1&, L2&, L3&...);
解説
このテンプレート関数に対する引数は、例外をスローする可能性がある try_lock
への呼び出しを除いて、mutex 型である必要があります。
この関数は、lock
、try_lock
、および unlock
への呼び出しによるデッドロックなしで、すべての引数をロックします。 lock
または try_lock
の呼び出しで例外がスローされると、この関数は再び例外をスローする前に正常にロックされた mutex オブジェクトのいずれかに unlock
を呼び出します。
スワップ
template <class Mutex>
void swap(unique_lock<Mutex>& x, unique_lock<Mutex>& y) noexcept;
try_lock
template <class L1, class L2, class... L3> int try_lock(L1&, L2&, L3&...);
try_to_lock
unique_lock のコンストラクターに渡すことのできるオブジェクトを表し、ブロックされずに渡される mutex
をコンストラクターがロック解除しようとしたほうがよいことを示します。
const try_to_lock_t try_to_lock;