IVirtualProcessorRoot::EnsureAllTasksVisible 方法
造成存放在個別處理器之記憶體階層中的資料顯示在系統的所有處理器上。 它可確保在方法傳回前已在所有處理器上執行完整的記憶體柵欄。
virtual void EnsureAllTasksVisible(
_Inout_ IExecutionContext *pContext
) =0;
參數
- pContext
目前由這個虛擬處理器根所分派的內容。
備註
若要同步處理停用虛擬處理器根與在排程器中加入新工作,這個方法相當有用。 基於效能原因,您可能會決定將工作項目加入至您排程器,而不執行記憶體屏障,表示在某個處理器上執行之執行緒所加入的工作項目不會立即對其他所有處理器顯示。 Deactivate 搭配使用這種方法可確保您的排程器不會停用所有虛擬的處理器的方法根,而工作項目仍存在於您的排程器集合中。
EnsureAllTasksVisibleThe 方法的呼叫必須來自虛擬處理器根上次啟動與執行內容 Dispatch 方法內。 換句話說,叫用EnsureAllTasksVisible 方法的執行緒 Proxy 必須是目前在虛擬處理器根執行的執行緒 Proxy。 在您未執行的虛擬處理器根上呼叫方法可能會造成未定義的行為。
如果引數 pContext 具有值 NULL,就會擲回 invalid_argument。
如果從未啟動虛擬處理器根,或引數 pContext 不能代表這個虛擬處理器根最近分派的執行內容,則會擲回 invalid_operation。
需求
標頭: concrtrm.h
Namespace: 並行存取