ISchedulerProxy::RequestInitialVirtualProcessors, méthode
Demande une allocation initiale de racines de processeur virtuel. Chaque racine de processeur virtuel représente la capacité à exécuter un thread qui peut exécuter un travail pour le planificateur.
virtual IExecutionResource * RequestInitialVirtualProcessors(
bool doSubscribeCurrentThread
) =0;
Paramètres
- doSubscribeCurrentThread
Si le thread actuel doit ou non faire l'objet d'un abonnement et être pris en compte pendant l'allocation des ressources.
Valeur de retour
L'interface IExecutionResource pour le thread actuel, si le paramètre doSubscribeCurrentThread a la valeur true. Si cette valeur est false, si la méthode retourne NULL.
Notes
Avant qu'un planificateur ne puisse exécuter un travail, il doit utiliser cette méthode pour demander les racines de processeur virtuel du Gestionnaire des ressources. Le Gestionnaire des ressources accédera à la stratégie du planificateur à l'aide de IScheduler::GetPolicy et utilisera les valeurs des clés de stratégie MinConcurrency, MaxConcurrency et TargetOversubscriptionFactor pour déterminer combien de threads matériels assigner initialement au planificateur et combien de racines de processeur virtuel créer pour chaque thread matériel. Pour plus d'informations sur la façon dont les stratégies de planificateur sont utilisées pour déterminer l'allocation initiale d'un planificateur, consultez PolicyElementKey.
Le Gestionnaire des ressources accorde des ressources à un planificateur en appelant la méthode IScheduler::AddVirtualProcessors avec une liste de racines de processeur virtuel. La méthode est appelée comme rappel dans le planificateur avant que cette méthode ne renvoie un résultat.
Si le planificateur a demandé l'abonnement pour le thread actuel en affectant au paramètre doSubscribeCurrentThread la valeur true, la méthode retourne une interface IExecutionResource. L'abonnement doit être terminé à un moment ultérieur à l'aide de la méthode IExecutionResource::Remove.
Lors de la détermination des threads matériels sélectionnés, le Gestionnaire des ressources essaiera d'optimiser pour l'affinité de nœud de processeur. Si l'abonnement est demandé pour le thread actuel, cela indique que le thread actuel projette de participer au travail assigné à ce planificateur. Dans un tel cas, les racines de processeur virtuel allouées se trouvent sur le nœud processeur sur lequel le thread s'exécute actuellement, si possible.
L'acte d'abonnement d'un thread augmente le niveau d'abonnement du thread matériel sous-jacent de 1. Le niveau d'abonnement est réduit de un lorsque l'abonnement est terminé. Pour plus d'informations sur les niveaux d'abonnement, consultez IExecutionResource::CurrentSubscriptionLevel.
Configuration requise
En-tête : concrtrm.h
Accès concurrentiel del'espace de noms :