<mutex> 函数和变量

adopt_lock

表示可传递给 lock_guardunique_lock 的构造函数,以指示同样传递给该构造函数的互斥体对象已锁定的对象。

const adopt_lock_t adopt_lock;

call_once

提供在执行期间只调用一次指定的可调用对象的机制。

template <class Callable, class... Args>
void call_once(once_flag& Flag,
    Callable F&&, Args&&... A);

参数

标记
确保只能调用一次可调用对象的 once_flag 对象。

F
一个可调用的对象。

A
自变量列表。

备注

如果 Flag 无效,函数将引发一个错误代码为 invalid_argumentsystem_error。 否则,模板函数将使用其 Flag 参数,以确保它仅成功调用一次 F(A...),而不考虑调用模板函数的次数。 如果通过引发异常退出 F(A...),则该调用未成功。

defer_lock

表示可传递给 unique_lock 的构造函数的对象。 这表示该构造函数不应锁定还将传递给它的 mutex 对象。

const defer_lock_t defer_lock;

lock

尝试在不死锁的情况下锁定所有自变量。

template <class L1, class L2, class... L3>
void lock(L1&, L2&, L3&...);

注解

模板函数的参数必须为 mutex 类型,只不过对 try_lock 的调用可能会引发异常。

调用 locktry_lockunlock 时,该函数会锁定其所有参数,而不会出现死锁。 如果对 locktry_lock 的调用引发异常,则该函数将在重新引发异常之前,对已成功锁定的任何 mutex 对象调用 unlock

swap

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;