<mutex>

类定义包含的标准头 <(>mutexrecursive_mutextimed_mutexrecursive_timed_mutex;模板 lock_guardunique_lock;和支持定义互斥区域代码和函数的类型。

此标头使用并发运行时 (ConcRT),以便可以与其他 ConcRT framework 一起使用它。 有关ConcRT的详细信息,请参阅并发运行时

#include <mutex>

备注

备注

在代码中使用 /clr或者/clr:pure来编译,标头是被锁定的。

mutexrecursive_mutex 是 互斥类型。 mutex 类型均有一个默认构造函数并不引发异常的析构函数。 这些对象提供有互斥的方法,在多个线程尝试锁定的对象。 尤其是,mutex 类型以包含方法 locktry_lockunlock:

  • lock 方法阻止调用线程,直到线程获取该 mutex 的所有权。 其返回值将忽略。

  • try_lock 方法尝试获取该 mutex 的所有权,而不受阻止。 其返回类型转换成 bool 为 true,则方法将获得所有权,但是,否则为 false。

  • unlock 方法释放 mutex 的所有权从调用的线程中。

mutex 可以使用类型作为类型参数实例化模板 lock_guardunique_lock。 可以使用这些类型对象作为 Lock 参数。等待成员函数模板中 condition_variable_any

计时 mutex 类型 都满足类型的要求。 此外,其必须是可调用的。使用一个参数的 try_lock_fortry_lock_until 方法,并返回转换成 bool的类型。 在这些其他参数都具有默认值条件下,通过使用附加参数,一计时 mutex 类型可以定义这些函数。

  • try_lock_for 方法必须是可调用的。使用一个参数,即 Rel_time,类型为 chrono::duration的实例化。 无论成功,则方法尝试获取该 mutex 的所有权,但是,在 Rel_time指定的时间内,将返回。 如果方法将获得所有权,返回值转换为 true ;否则,false返回的值转换。

  • try_lock_until 方法必须是可调用的。使用一个参数,即 Abs_time,类型为 chrono::time_point的实例化。 无论成功,则方法将在 Abs_time指定的时间尝试获取该 mutex 的所有权,但不返回。 如果方法将获得所有权,返回值转换为 true ;否则,false返回的值转换。

也调用 mutex 类型是 可锁定的类型。 如果不提供成员函数 try_lock,它是一个简单 的可锁定的类型。 也称为一计时 mutex 类型是一个 计时的可锁定的类型。

Name

说明

lock_guard 类

表示可以实例化创建对象析构函数释放锁定 mutex的模板。

mutex 类 (STL)

表示一个 mutex 类型。 使用此类型对象强制程序内的互斥。

recursive_mutex 类

表示一个 mutex 类型。 在对 mutex 类的 constrast,调用已锁定的对象的锁的方法行为是显式定义的。

recursive_timed_mutex 类

表示一个 mutex 计时类型。 使用此类型对象强制具有程序内的互斥锁的时间限制。 与不同 timed_mutex类型的对象,调用 recursive_timed_mutex 对象的锁的方法的效果是显式定义的。

timed_mutex 类

表示一个 mutex 计时类型。 使用此类型对象强制具有程序内的互斥锁的时间限制。

unique_lock 类

表示可以实例化对象创建托管锁定和取消锁定 mutex的模板。

函数

Name

说明

call_once 函数

为确切调用指定的可调用对象提供一个机制一次执行过程。

lock 函数

尝试锁定所有参数,没有将死锁。

结构

Name

说明

adopt_lock_t 结构

表示用于定义 adopt_lock的类型。

defer_lock_t 结构

表示定义 defer_lock 对象来选择 unique_lock重载之一的构造函数的类型。

once_flag 结构

表示 struct 用模板函数 call_once 甚至在出现之前执行多线程确保初始化的代码仅调用一次。,

try_to_lock_t 结构

表示定义 try_to_lock 对象和使用选择 unique_lock重载之一的构造函数的 struct。

变量

Name

说明

adopt_lock 变量

表示可以传递给 lock_guard 的构造函数,并指示 unique_lock 的对象还传递给构造函数锁定的 Mutex 对象。

defer_lock 变量

表示可以传递给 unique_lock的构造函数的对象,指示构造函数不应锁还传递给它的 Mutex 对象。

try_to_lock 变量

表示可以传递给 unique_lock 的构造函数可表示的对象还传递给它的,并且在不妨碍的构造函数应尝试取消锁定 mutex

请参见

其他资源

C++ 标准库头文件