<mutex>
函数和变量
adopt_lock
表示可传递给 lock_guard 和 unique_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_argument
的 system_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
的调用可能会引发异常。
调用 lock
、try_lock
和 unlock
时,该函数会锁定其所有参数,而不会出现死锁。 如果对 lock
或 try_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;