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