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();