critical_section 类

明确感知并发运行时的不可重入互斥。

语法

class critical_section;

成员

公共 Typedef

名称 描述
native_handle_type critical_section 对象的引用。

公共类

名称 描述
critical_section::scoped_lock 类 critical_section 对象的异常安全 RAII 包装器。

公共构造函数

名称 描述
critical_section 构造新的关键部分。
~critical_section 析构函数 销毁关键部分。

公共方法

名称 描述
lock 获取此关键部分。
native_handle 如果存在,返回平台特定的本机句柄。
try_lock 尝试在不阻塞的情况下获取锁。
try_lock_for 尝试在不将锁阻塞特定毫秒数的情况下获取锁。
unlock 解锁关键部分对象。

备注

有关详细信息,请参阅同步数据结构

继承层次结构

critical_section

要求

标头:concrt.h

命名空间: 并发

critical_section

构造新的关键部分。

critical_section();

~critical_section

销毁关键部分。

~critical_section();

备注

析构函数运行时,应不再持有锁。 若在仍持有锁的情况下允许析构关键部分,则会导致未定义的行为。

lock

获取此关键部分。

void lock();

备注

利用 scoped_lock 构造,以异常安全方式获取和释放 critical_section 对象通常更安全。

如果调用上下文已持有锁,则会引发 improper_lock 异常。

native_handle

如果存在,返回平台特定的本机句柄。

native_handle_type native_handle();

返回值

对关键部分的引用。

备注

critical_section 对象不与适用于 Windows 操作系统的平台特定本机句柄关联。 该方法只返回对对象本身的引用。

critical_section::scoped_lock 类

critical_section 对象的异常安全 RAII 包装器。

class scoped_lock;

scoped_lock::scoped_lock

构造 scoped_lock 对象,并获取在 _Critical_section 参数中传递的 critical_section 对象。 如果关键部分由另一个线程持有,那么这个调用将停止。

explicit _CRTIMP scoped_lock(critical_section& _Critical_section);

参数

_Critical_section
要锁定的关键部分。

scoped_lock::~scoped_lock

销毁 scoped_lock 对象并释放其构造函数中提供的关键部分。

~scoped_lock();

try_lock

尝试在不阻塞的情况下获取锁。

bool try_lock();

返回值

如果获取了锁,则为值 true,否则为值 false

try_lock_for

尝试在不将锁阻塞特定毫秒数的情况下获取锁。

bool try_lock_for(unsigned int _Timeout);

参数

_Timeout
超时前要等待的毫秒数。

返回值

如果获取了锁,则为值 true,否则为值 false

解锁

解锁关键部分对象。

void unlock();

另请参阅

并发命名空间
reader_writer_lock 类