ISchedulerProxy::RequestInitialVirtualProcessors 方法
要求初始配置虛擬處理器根。 每個虛擬處理器根都代表能夠執行其中一個可執行排程器工作的執行緒。
virtual IExecutionResource * RequestInitialVirtualProcessors(
bool doSubscribeCurrentThread
) =0;
參數
- doSubscribeCurrentThread
是否要在來源配置期間訂閱並負責目前的執行緒。
傳回值
目前執行緒的 IExecutionResource 介面 (如果 doSubscribeCurrentThread 參數具有 true 值)。 如果值為 false,方法會傳回 NULL。
備註
排程器執行任何工作之前,應會使用此方法向資源管理員要求虛擬處理器根。 資源管理員將會使用 IScheduler::GetPolicy 存取排程器的原則,並且原則機碼 MinConcurrency、MaxConcurrency 和 TargetOversubscriptionFactor 來決定初始要將多少硬體執行緒指派至排程器,以及要為每個硬體執行緒建立多少虛擬處理器根。 如需如何使用排程器原則決定排程器初始配置的詳細資訊,請參閱 PolicyElementKey。
資源管理員可以利用虛擬處理器根清單呼叫 IScheduler::AddVirtualProcessors 方法,將資源授與排程器。 在這個方法傳回前,叫用這個方法當做傳至排程器的回呼。
如果排程器將參數 doSubscribeCurrentThread 設為 true,以要求訂閱目前的執行緒,方法會傳回 IExecutionResource 介面。 稍後必須使用 IExecutionResource::Remove 方法終止訂閱。
決定選取哪些硬體執行緒時,資源管理員會嘗試最佳化處理器節點相關性。 如果要求目前執行緒的訂閱,就表示目前的執行緒將參與分配給此排程器的工作。 在這種情況下,所配置的虛擬處理器根會盡可能位於正在執行目前執行緒的處理器節點。
訂閱執行緒的動作會將基礎硬體執行緒訂閱層級增加一。 終止訂閱時,訂閱層級會降低一層。 如需訂閱層級的詳細資訊,請參閱 IExecutionResource::CurrentSubscriptionLevel。
需求
標頭: concrtrm.h
Namespace: 並行存取