<mutex>
类定义包含的标准头 <(>mutex、recursive_mutex、timed_mutex和 recursive_timed_mutex;模板 lock_guard 和 unique_lock;和支持定义互斥区域代码和函数的类型。
此标头使用并发运行时 (ConcRT),以便可以与其他 ConcRT framework 一起使用它。 有关ConcRT的详细信息,请参阅并发运行时。
#include <mutex>
备注
备注
在代码中使用 /clr或者/clr:pure来编译,标头是被锁定的。
类 mutex 和 recursive_mutex 是 互斥类型。 mutex 类型均有一个默认构造函数并不引发异常的析构函数。 这些对象提供有互斥的方法,在多个线程尝试锁定的对象。 尤其是,mutex 类型以包含方法 lock、try_lock和 unlock:
lock 方法阻止调用线程,直到线程获取该 mutex 的所有权。 其返回值将忽略。
try_lock 方法尝试获取该 mutex 的所有权,而不受阻止。 其返回类型转换成 bool 为 true,则方法将获得所有权,但是,否则为 false。
unlock 方法释放 mutex 的所有权从调用的线程中。
mutex 可以使用类型作为类型参数实例化模板 lock_guard 和 unique_lock。 可以使用这些类型对象作为 Lock 参数。等待成员函数模板中 condition_variable_any。
计时 mutex 类型 都满足类型的要求。 此外,其必须是可调用的。使用一个参数的 try_lock_for 和 try_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 |
说明 |
---|---|
表示可以实例化创建对象析构函数释放锁定 mutex的模板。 |
|
表示一个 mutex 类型。 使用此类型对象强制程序内的互斥。 |
|
表示一个 mutex 类型。 在对 mutex 类的 constrast,调用已锁定的对象的锁的方法行为是显式定义的。 |
|
表示一个 mutex 计时类型。 使用此类型对象强制具有程序内的互斥锁的时间限制。 与不同 timed_mutex类型的对象,调用 recursive_timed_mutex 对象的锁的方法的效果是显式定义的。 |
|
表示一个 mutex 计时类型。 使用此类型对象强制具有程序内的互斥锁的时间限制。 |
|
表示可以实例化对象创建托管锁定和取消锁定 mutex的模板。 |
函数
Name |
说明 |
---|---|
为确切调用指定的可调用对象提供一个机制一次执行过程。 |
|
尝试锁定所有参数,没有将死锁。 |
结构
Name |
说明 |
---|---|
表示用于定义 adopt_lock的类型。 |
|
表示定义 defer_lock 对象来选择 unique_lock重载之一的构造函数的类型。 |
|
表示 struct 用模板函数 call_once 甚至在出现之前执行多线程确保初始化的代码仅调用一次。, |
|
表示定义 try_to_lock 对象和使用选择 unique_lock重载之一的构造函数的 struct。 |
变量
Name |
说明 |
---|---|
表示可以传递给 lock_guard 的构造函数,并指示 unique_lock 的对象还传递给构造函数锁定的 Mutex 对象。 |
|
表示可以传递给 unique_lock的构造函数的对象,指示构造函数不应锁还传递给它的 Mutex 对象。 |
|
表示可以传递给 unique_lock 的构造函数可表示的对象还传递给它的,并且在不妨碍的构造函数应尝试取消锁定 mutex。 |