共用方式為


Context::Unblock 方法

解除封鎖內容,並讓它成為可執行。

virtual void Unblock() =0;

備註

先呼叫 Unblock 方法再呼叫 Block 方法是完全合法的。只要 BlockUnblock 方法的呼叫正確成對,執行階段就會正確地處理任何排序的自然競爭。在 Block 呼叫之前的 Unblock 呼叫只會取消 Block 呼叫的效果。

此方法可能會傳回數種例外狀況。如果內容嘗試在其本身呼叫 Unblock 方法,就會擲回 context_self_unblock 例外狀況。如果要呼叫的方法BlockUnblock不正確成對出現 (例如,兩個要呼叫的方法Unblock有針對目前正在執行的內容)、 context_unblock_unbalanced 擲回例外狀況。

請注意,在程式碼發佈其內容讓其他執行緒能夠呼叫 Unblock 方法的點,以及實際方法呼叫 Block 的點之間有一個重要的句號。在這段期間,請千萬不要呼叫任何方法,這可能會依序封鎖並解除封鎖它自己的原因 (例如,取得鎖定)。BlockUnblock 方法的呼叫不會追蹤封鎖和解除封鎖的原因。只有一個物件可以擁有 BlockUnblock 組的擁有權。

需求

標頭: concrt.h

Namespace: 並行存取

請參閱

參考

Context 類別

Context::Block 方法

概念

工作排程器 (並行執行階段)