Share via


Klasse CurrentScheduler

Vertegenwoordigt een abstractie voor de huidige planner die is gekoppeld aan de aanroepende context.

Syntaxis

class CurrentScheduler;

Leden

Openbare methoden

Naam Description
Creƫren Hiermee maakt u een nieuwe scheduler waarvan het gedrag wordt beschreven door de _Policy parameter en deze koppelt aan de aanroepende context. De zojuist gemaakte scheduler wordt de huidige scheduler voor de aanroepende context.
CreateScheduleGroup Overbelast. Hiermee maakt u een nieuwe planningsgroep binnen de planner die is gekoppeld aan de aanroepende context. De versie die de parameter _Placement gebruikt, zorgt ervoor dat taken binnen de nieuw aangemaakte planningsgroep de neiging hebben om te worden uitgevoerd op de locatie gespecificeerd door die parameter.
loskoppelen Koppelt de huidige taakplanner los van de aanroepcontext en zet de eerder gekoppelde taakplanner weer in als de huidige taakplanner, als er een bestaat. Nadat deze methode geretourneerd is, wordt de aanroepende context beheerd door de scheduler, die eerder aan de context verbonden was met behulp van de CurrentScheduler::Create of Scheduler::Attach methode.
ophalen Retourneert een aanwijzer naar de taakplanner die is gekoppeld aan de aanroepende context, ook wel de huidige taakplanner genoemd.
GetNumberOfVirtualProcessors Retourneert het huidige aantal virtuele processors voor de scheduler die is gekoppeld aan de aanroepende context.
GetPolicy Retourneert een kopie van het beleid waarmee de huidige planner is gemaakt.
Id Retourneert een unieke id voor de huidige planner.
IsAvailableLocation Bepaalt of een bepaalde locatie beschikbaar is op de huidige planner.
RegisterShutdownEvent Zorgt ervoor dat de Windows-gebeurtenisgreep die is doorgegeven in de _ShutdownEvent parameter wordt gesignaleerd wanneer de scheduler die is gekoppeld aan de huidige context wordt afgesloten en zichzelf vernietigt. Op het moment dat de gebeurtenis wordt gesignaleerd, is al het werk dat naar de planner is gepland, voltooid. Er kunnen meerdere afsluit gebeurtenissen worden geregistreerd via deze methode.
ScheduleTask Overbelast. Hiermee wordt een lichtgewicht taak ingepland binnen de scheduler die is gekoppeld aan de aanroepende context. De lichtgewicht taak wordt geplaatst in een planningsgroep die wordt bepaald door de runtime. De versie die de parameter _Placement gebruikt, zorgt ervoor dat de taak wordt bevooroordeeld bij het uitvoeren op de opgegeven locatie.

Opmerkingen

Als er geen scheduler is (zie Scheduler) die is gekoppeld aan de aanroepende context, resulteren veel methoden binnen de CurrentScheduler klasse in de bijlage van de standaardplanner van het proces. Dit kan ook betekenen dat de standaardplanner van het proces wordt gemaakt tijdens een dergelijke aanroep.

Overnamehiƫrarchie

CurrentScheduler

Requirements

Koptekst: concrt.h

Naamruimte: concurrentie

Create

Hiermee maakt u een nieuwe scheduler waarvan het gedrag wordt beschreven door de _Policy parameter en deze koppelt aan de aanroepende context. De zojuist gemaakte scheduler wordt de huidige scheduler voor de aanroepende context.

static void __cdecl Create(const SchedulerPolicy& _Policy);

Parameterwaarden

_Beleid
Het scheduler-beleid dat het gedrag van de zojuist gemaakte planner beschrijft.

Opmerkingen

De koppeling van de scheduler aan de oproepende context plaatst impliciet een referentietelling op de scheduler.

Nadat een scheduler met de Create methode is gemaakt, moet u op een bepaald moment in de toekomst de methode CurrentScheduler::Detach aanroepen om de scheduler te laten afsluiten.

Als deze methode wordt aangeroepen vanuit een context die al is gekoppeld aan een andere planner, wordt de bestaande planner onthouden als de vorige planner en wordt de zojuist gemaakte planner de huidige planner. Wanneer u de CurrentScheduler::Detach methode op een later moment aanroept, wordt de vorige planner hersteld als de huidige planner.

Deze methode kan verschillende uitzonderingen genereren, waaronder scheduler_resource_allocation_error en invalid_scheduler_policy_value.

CreateScheduleGroup

Hiermee maakt u een nieuwe planningsgroep binnen de planner die is gekoppeld aan de aanroepende context. De versie die de parameter _Placement gebruikt, zorgt ervoor dat taken binnen de nieuw aangemaakte planningsgroep de neiging hebben om te worden uitgevoerd op de locatie gespecificeerd door die parameter.

static ScheduleGroup* __cdecl CreateScheduleGroup();

static ScheduleGroup* __cdecl CreateScheduleGroup(location& _Placement);

Parameterwaarden

_Plaatsing
Een verwijzing naar een locatie waar de taken binnen de planningsgroep worden bevooroordeeld voor uitvoering op.

Retourwaarde

Een aanwijzer naar de zojuist gemaakte planningsgroep. Dit ScheduleGroup-object heeft een eerste verwijzingsaantal dat erop is geplaatst.

Opmerkingen

Met deze methode wordt de standaardplanner van het proces gemaakt en/of gekoppeld aan de aanroepende context als er momenteel geen scheduler is gekoppeld aan de aanroepende context.

U moet de releasemethode voor een planningsgroep aanroepen wanneer u klaar bent met het plannen van het werk. De scheduler vernietigt de taakgroep wanneer al het werk in de wachtrij is voltooid.

Als u deze scheduler expliciet hebt gemaakt, moet u alle verwijzingen naar schemagroepen erin vrijgeven voordat u uw verwijzing op de scheduler loslaat door de huidige context ervan los te koppelen.

Loskoppelen

Koppelt de huidige taakplanner los van de aanroepcontext en zet de eerder gekoppelde taakplanner weer in als de huidige taakplanner, als er een bestaat. Nadat deze methode geretourneerd is, wordt de aanroepende context beheerd door de scheduler, die eerder aan de context verbonden was met behulp van de CurrentScheduler::Create of Scheduler::Attach methode.

static void __cdecl Detach();

Opmerkingen

De Detach methode verwijdert impliciet een verwijzingsaantal van de scheduler.

Als er geen scheduler is gekoppeld aan de aanroepende context, resulteert het aanroepen van deze methode in een scheduler_not_attached uitzondering.

Als u deze methode aanroept vanuit een context die intern is voor en wordt beheerd door een planner, of een context die is gekoppeld met een andere methode dan de Scheduler::Attach of CurrentScheduler::Create-methoden , wordt er een improper_scheduler_detach uitzondering gegenereerd.

Ontvang

Retourneert een aanwijzer naar de taakplanner die is gekoppeld aan de aanroepende context, ook wel de huidige taakplanner genoemd.

static Scheduler* __cdecl Get();

Retourwaarde

Een aanwijzer naar de planner die is gekoppeld aan de aanroepende context (de huidige planner).

Opmerkingen

Met deze methode wordt de standaardplanner van het proces gemaakt en/of gekoppeld aan de aanroepende context als er momenteel geen scheduler is gekoppeld aan de aanroepende context. Er wordt geen extra verwijzing geplaatst op het Scheduler object dat door deze methode wordt geretourneerd.

AantalVirtueleProcessorenOphalen

Retourneert het huidige aantal virtuele processors voor de scheduler die is gekoppeld aan de aanroepende context.

static unsigned int __cdecl GetNumberOfVirtualProcessors();

Retourwaarde

Als een planner is gekoppeld aan de aanroepende context, is het huidige aantal virtuele processors voor die planner; anders is de waarde -1.

Opmerkingen

Deze methode zal niet resulteren in de koppeling van de scheduler als de aanroepende context nog niet reeds is geassocieerd met een scheduler.

De retourwaarde van deze methode is een onmiddellijke steekproef van het aantal virtuele processors voor de scheduler die is gekoppeld aan de aanroepende context. Deze waarde kan verlopen zijn op het moment dat deze wordt geretourneerd.

GetPolicy

Retourneert een kopie van het beleid waarmee de huidige planner is gemaakt.

static SchedulerPolicy __cdecl GetPolicy();

Retourwaarde

Een kopie van het beleid waarmee de huidige planner is gemaakt.

Opmerkingen

Met deze methode wordt de standaardplanner van het proces gemaakt en/of gekoppeld aan de aanroepende context als er momenteel geen scheduler is gekoppeld aan de aanroepende context.

Identiteitsbewijs

Retourneert een unieke id voor de huidige planner.

static unsigned int __cdecl Id();

Retourwaarde

Als een scheduler is gekoppeld aan de aanroepende context, wordt een unieke identificatie voor die scheduler gegeven; anders is de waarde -1.

Opmerkingen

Deze methode resulteert niet in het toewijzen van een scheduler als de aanroepende context nog niet is gekoppeld aan een scheduler.

IsBeschikbareLocatie

Bepaalt of een bepaalde locatie beschikbaar is op de huidige planner.

static bool __cdecl IsAvailableLocation(const location& _Placement);

Parameterwaarden

_Plaatsing
Een verwijzing naar de locatie waar informatie over moet worden opgevraagd bij de huidige planner.

Retourwaarde

Een indicatie of de locatie die door het _Placement argument is opgegeven, al dan niet beschikbaar is in de huidige planner.

Opmerkingen

Deze methode resulteert niet in het koppelen aan de planner als de aanroepende context nog niet is gekoppeld aan een scheduler.

Houd er rekening mee dat de retourwaarde een onmiddellijke steekproef is van of de opgegeven locatie beschikbaar is. In aanwezigheid van meerdere planners kan dynamisch resourcebeheer op elk gewenst moment resources van planners toevoegen of verwijderen. Als dit gebeurt, kan de opgegeven locatie de beschikbaarheid wijzigen.

RegisterShutdownEvent

Zorgt ervoor dat de Windows-gebeurtenisgreep die is doorgegeven in de _ShutdownEvent parameter wordt gesignaleerd wanneer de scheduler die is gekoppeld aan de huidige context wordt afgesloten en zichzelf vernietigt. Op het moment dat de gebeurtenis wordt gesignaleerd, is al het werk dat naar de planner is gepland, voltooid. Er kunnen meerdere afsluit gebeurtenissen worden geregistreerd via deze methode.

static void __cdecl RegisterShutdownEvent(HANDLE _ShutdownEvent);

Parameterwaarden

_ShutdownEvent
Een ingang naar een Windows-gebeurtenisobject dat wordt gesignaleerd door de runtime wanneer de scheduler die is gekoppeld aan de huidige context wordt afgesloten en zichzelf vernietigt.

Opmerkingen

Als er geen scheduler is gekoppeld aan de aanroepende context, resulteert het aanroepen van deze methode in een scheduler_not_attached uitzondering.

ScheduleTask

Hiermee wordt een lichtgewicht taak ingepland binnen de scheduler die is gekoppeld aan de aanroepende context. De lichtgewicht taak wordt geplaatst in een planningsgroep die wordt bepaald door de runtime. De versie die de parameter _Placement gebruikt, zorgt ervoor dat de taak wordt bevooroordeeld bij het uitvoeren op de opgegeven locatie.

static void __cdecl ScheduleTask(
    TaskProc _Proc,
    _Inout_opt_ void* _Data);

static void __cdecl ScheduleTask(
    TaskProc _Proc,
    _Inout_opt_ void* _Data,
    location& _Placement);

Parameterwaarden

_Proc
Een aanwijzer naar de functie die moet worden uitgevoerd om de inhoud van de lichtgewichttaak uit te voeren.

_Gegevens
Een lege pointer naar de gegevens die als parameter worden doorgegeven aan het kernonderdeel van de taak.

_Plaatsing
Een verwijzing naar een locatie waar de lichtgewicht taak wordt bevooroordeeld bij uitvoering.

Opmerkingen

Met deze methode wordt de standaardplanner van het proces gemaakt en/of gekoppeld aan de aanroepende context als er momenteel geen scheduler is gekoppeld aan de aanroepende context.

Zie ook

concurrentie Namespace
Scheduler-klasse
PolicyElementKey
Taakplanner