critical_section 類別
其為並行執行階段明確察覺且不可重新進入的 Mutex。
語法
class critical_section;
成員
公用 Typedefs
名稱 | 描述 |
---|---|
native_handle_type |
對 critical_section 物件的參考。 |
公用類別
名稱 | 描述 |
---|---|
critical_section::scoped_lock 類別 | 物件的例外狀況安全 RAII 包裝函式 critical_section 。 |
公用建構函式
名稱 | 描述 |
---|---|
critical_section | 建構新的重要區段。 |
~critical_section解構函式 | 終結重要區段。 |
公用方法
名稱 | 描述 |
---|---|
lock | 取得此重要區段。 |
native_handle | 如果存在,則傳回平臺特定的原生句柄。 |
try_lock | 嘗試取得鎖定而不封鎖。 |
try_lock_for | 嘗試取得鎖定,而不進行特定毫秒數的封鎖。 |
unlock | 解除鎖定關鍵區段。 |
備註
如需詳細資訊,請參閱 同步處理數據結構。
繼承階層架構
critical_section
需求
標頭: concrt.h
命名空間: concurrency
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 類別
物件的例外狀況安全 RAII 包裝函式 critical_section
。
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);
參數
_超時
在逾時前要等候的毫秒數。
傳回值
如果已取得鎖定,則為 值 true
,否則為 值 false
。
unlock
解除鎖定關鍵區段。
void unlock();