次の方法で共有


<mutex> 関数および変数

adopt_lock

lock_guardunique_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 型である必要があります。

この関数は、locktry_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;