CurrentScheduler, classe
Représente une abstraction pour le planificateur actuel associé au contexte d'appel.
Syntaxe
class CurrentScheduler;
Membres
Méthodes publiques
Nom | Description |
---|---|
Créer | Crée un planificateur dont le comportement est décrit par le _Policy paramètre et l’attache au contexte appelant. Le planificateur nouvellement créé devient le planificateur actuel pour le contexte d’appel. |
CreateScheduleGroup | Surcharge. Crée un groupe de planification dans le planificateur associé au contexte appelant. La version qui accepte le paramètre _Placement entraîne l’exécution de tâches dans le groupe de planification nouvellement créé vers l’exécution à l’emplacement spécifié par ce paramètre. |
Détacher | Détache le planificateur actuel du contexte appelant et restaure le planificateur précédemment attaché en tant que planificateur actuel, s’il en existe un. Une fois cette méthode retournée, le contexte appelant est ensuite géré par le planificateur qui a été précédemment attaché au contexte à l’aide de la ou Scheduler::Attach de la CurrentScheduler::Create méthode. |
Get | Retourne un pointeur vers le planificateur associé au contexte appelant, également appelé planificateur actuel. |
GetNumberOfVirtualProcessors | Retourne le nombre actuel de processeurs virtuels pour le planificateur associé au contexte appelant. |
GetPolicy | Retourne une copie de la stratégie avec laquelle le planificateur actuel a été créé. |
Id | Retourne un identificateur unique pour le planificateur actuel. |
IsAvailableLocation | Détermine si un emplacement donné est disponible sur le planificateur actuel. |
RegisterShutdownEvent | Provoque le signal du handle d’événement Windows transmis dans le _ShutdownEvent paramètre lorsque le planificateur associé au contexte actuel s’arrête et se détruit. Au moment où l’événement est signalé, tout le travail planifié pour le planificateur est terminé. Plusieurs événements d’arrêt peuvent être inscrits via cette méthode. |
ScheduleTask | Surcharge. Planifie une tâche légère dans le planificateur associé au contexte appelant. La tâche légère sera placée dans un groupe de planification déterminé par le runtime. La version qui prend le paramètre _Placement entraîne le biais de la tâche vers l’exécution à l’emplacement spécifié. |
Notes
S’il n’existe aucun planificateur (voir Scheduler) associé au contexte appelant, de nombreuses méthodes au sein de la CurrentScheduler
classe entraînent une pièce jointe du planificateur par défaut du processus. Cela peut également impliquer que le planificateur par défaut du processus est créé pendant un tel appel.
Hiérarchie d'héritage
CurrentScheduler
Spécifications
En-tête : concrt.h
Espace de noms : concurrency
Créer
Crée un planificateur dont le comportement est décrit par le _Policy
paramètre et l’attache au contexte appelant. Le planificateur nouvellement créé devient le planificateur actuel pour le contexte d’appel.
static void __cdecl Create(const SchedulerPolicy& _Policy);
Paramètres
_Politique
Stratégie de planificateur qui décrit le comportement du planificateur nouvellement créé.
Notes
La pièce jointe du planificateur au contexte appelant place implicitement un nombre de références sur le planificateur.
Une fois qu’un planificateur est créé avec la Create
méthode, vous devez appeler la méthode CurrentScheduler ::D etach à un moment donné dans le futur pour permettre au planificateur de s’arrêter.
Si cette méthode est appelée à partir d’un contexte déjà attaché à un autre planificateur, le planificateur existant est mémorisé comme le planificateur précédent, et le planificateur nouvellement créé devient le planificateur actuel. Lorsque vous appelez la CurrentScheduler::Detach
méthode à un moment ultérieur, le planificateur précédent est restauré en tant que planificateur actuel.
Cette méthode peut lever diverses exceptions, notamment scheduler_resource_allocation_error et invalid_scheduler_policy_value.
CreateScheduleGroup
Crée un groupe de planification dans le planificateur associé au contexte appelant. La version qui accepte le paramètre _Placement
entraîne l’exécution de tâches dans le groupe de planification nouvellement créé vers l’exécution à l’emplacement spécifié par ce paramètre.
static ScheduleGroup* __cdecl CreateScheduleGroup();
static ScheduleGroup* __cdecl CreateScheduleGroup(location& _Placement);
Paramètres
_Placement
Référence à un emplacement où les tâches au sein du groupe de planification seront biaisées pour s’exécuter.
Valeur de retour
Pointeur vers le groupe de planification nouvellement créé. Cet ScheduleGroup
objet a un nombre de références initial placé sur celui-ci.
Notes
Cette méthode entraîne la création du planificateur par défaut du processus et/ou son attachement au contexte d'appel s'il n'existe aucun planificateur actuellement associé au contexte d'appel.
Vous devez appeler la méthode Release sur un groupe de planification lorsque vous avez terminé le travail de planification. Le planificateur détruit le groupe de planifications lorsque tous les travaux mis en file d’attente sont terminés.
Notez que si vous avez créé explicitement ce planificateur, vous devez libérer toutes les références aux groupes de planification dans celui-ci, avant de publier votre référence sur le planificateur, en détachant le contexte actuel de celui-ci.
Detach
Détache le planificateur actuel du contexte appelant et restaure le planificateur précédemment attaché en tant que planificateur actuel, s’il en existe un. Une fois cette méthode retournée, le contexte appelant est ensuite géré par le planificateur qui a été précédemment attaché au contexte à l’aide de la ou Scheduler::Attach
de la CurrentScheduler::Create
méthode.
static void __cdecl Detach();
Notes
La Detach
méthode supprime implicitement un nombre de références du planificateur.
Si aucun planificateur n’est attaché au contexte appelant, l’appel de cette méthode entraîne la levée d’une exception scheduler_not_attached .
L’appel de cette méthode à partir d’un contexte interne à et géré par un planificateur, ou un contexte attaché à l’aide d’une méthode autre que scheduler ::Attach ou CurrentScheduler ::Create , entraîne la levée d’une exception improper_scheduler_detach .
Get
Retourne un pointeur vers le planificateur associé au contexte appelant, également appelé planificateur actuel.
static Scheduler* __cdecl Get();
Valeur de retour
Pointeur vers le planificateur associé au contexte appelant (planificateur actuel).
Notes
Cette méthode entraîne la création du planificateur par défaut du processus et/ou son attachement au contexte d'appel s'il n'existe aucun planificateur actuellement associé au contexte d'appel. Aucune référence supplémentaire n’est placée sur l’objet Scheduler
retourné par cette méthode.
GetNumberOfVirtualProcessors
Retourne le nombre actuel de processeurs virtuels pour le planificateur associé au contexte appelant.
static unsigned int __cdecl GetNumberOfVirtualProcessors();
Valeur de retour
Si un planificateur est associé au contexte appelant, le nombre actuel de processeurs virtuels pour ce planificateur ; sinon, la valeur -1
.
Notes
Cette méthode n’entraîne pas la pièce jointe du planificateur si le contexte appelant n’est pas déjà associé à un planificateur.
La valeur de retour de cette méthode est un échantillonnage instantané du nombre de processeurs virtuels pour le planificateur associé au contexte appelant. Cette valeur peut être obsolète au moment où elle est retournée.
GetPolicy
Retourne une copie de la stratégie avec laquelle le planificateur actuel a été créé.
static SchedulerPolicy __cdecl GetPolicy();
Valeur de retour
Copie de la stratégie avec laquelle le planificateur actuel a été créé.
Notes
Cette méthode entraîne la création du planificateur par défaut du processus et/ou son attachement au contexte d'appel s'il n'existe aucun planificateur actuellement associé au contexte d'appel.
Id
Retourne un identificateur unique pour le planificateur actuel.
static unsigned int __cdecl Id();
Valeur de retour
Si un planificateur est associé au contexte appelant, un identificateur unique pour ce planificateur ; sinon, la valeur -1
.
Notes
Cette méthode n’entraîne pas la pièce jointe du planificateur si le contexte appelant n’est pas déjà associé à un planificateur.
IsAvailableLocation
Détermine si un emplacement donné est disponible sur le planificateur actuel.
static bool __cdecl IsAvailableLocation(const location& _Placement);
Paramètres
_Placement
Référence à l’emplacement pour interroger le planificateur actuel.
Valeur de retour
Indication indiquant si l’emplacement spécifié par l’argument _Placement
est disponible sur le planificateur actuel.
Notes
Cette méthode n’entraîne pas la pièce jointe du planificateur si le contexte appelant n’est pas déjà associé à un planificateur.
Notez que la valeur de retour est un échantillonnage instantané de la disponibilité de l’emplacement donné. En présence de plusieurs planificateurs, la gestion dynamique des ressources peut ajouter ou retirer des ressources des planificateurs à tout moment. Si cela se produit, l’emplacement donné peut modifier la disponibilité.
RegisterShutdownEvent
Provoque le signal du handle d’événement Windows transmis dans le _ShutdownEvent
paramètre lorsque le planificateur associé au contexte actuel s’arrête et se détruit. Au moment où l’événement est signalé, tout le travail planifié pour le planificateur est terminé. Plusieurs événements d’arrêt peuvent être inscrits via cette méthode.
static void __cdecl RegisterShutdownEvent(HANDLE _ShutdownEvent);
Paramètres
_ShutdownEvent
Handle vers un objet d’événement Windows qui sera signalé par le runtime lorsque le planificateur associé au contexte actuel s’arrête et se détruit.
Notes
Si aucun planificateur n’est attaché au contexte appelant, l’appel de cette méthode entraîne la levée d’une exception scheduler_not_attached .
ScheduleTask
Planifie une tâche légère dans le planificateur associé au contexte appelant. La tâche légère sera placée dans un groupe de planification déterminé par le runtime. La version qui prend le paramètre _Placement
entraîne le biais de la tâche vers l’exécution à l’emplacement spécifié.
static void __cdecl ScheduleTask(
TaskProc _Proc,
_Inout_opt_ void* _Data);
static void __cdecl ScheduleTask(
TaskProc _Proc,
_Inout_opt_ void* _Data,
location& _Placement);
Paramètres
_Proc
Pointeur vers la fonction à exécuter pour effectuer le corps de la tâche légère.
_Données
Pointeur void vers les données qui seront transmises en tant que paramètre au corps de la tâche.
_Placement
Référence à un emplacement où la tâche légère sera biaisée pour s’exécuter.
Notes
Cette méthode entraîne la création du planificateur par défaut du processus et/ou son attachement au contexte d'appel s'il n'existe aucun planificateur actuellement associé au contexte d'appel.
Voir aussi
accès concurrentiel Namespace
Scheduler, classe
PolicyElementKey
Planificateur de tâches