Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of mappen te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen om mappen te wijzigen.
Vertegenwoordigt een abstractie voor een Runtime-scheduler voor gelijktijdigheid.
Syntaxis
class Scheduler;
Leden
Beveiligde constructors
| Naam | Description |
|---|---|
| Planner | Een object van de Scheduler klasse kan alleen worden gemaakt met behulp van factory-methoden of impliciet. |
| ~Scheduler Destructor | Een object van de klasse wordt impliciet vernietigd wanneer alle externe verwijzingen naar de Scheduler klasse niet meer bestaan. |
Openbare methoden
| Naam | Description |
|---|---|
| Bijvoegen | Koppelt de scheduler aan de aanroepende context. Nadat deze methode is geretourneerd, wordt de aanroepende context beheerd door de scheduler, en wordt de scheduler de huidige scheduler. |
| Creëren | Er wordt een nieuwe scheduler gemaakt waarvan het gedrag wordt beschreven door de _Policy-parameter, er wordt een initiële verwijzing naar de scheduler geplaatst en er wordt een pointer ernaar geretourneerd. |
| CreateScheduleGroup | Overbelast. Hiermee maakt u een nieuwe planningsgroep binnen de planner. 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. |
| GetNumberOfVirtualProcessors | Retourneert het huidige aantal virtuele processors voor de scheduler. |
| GetPolicy | Retourneert een kopie van het beleid waarmee de scheduler is gemaakt. |
| Id | Retourneert een unieke identifier voor de scheduler. |
| IsAvailableLocation | Bepaalt of een bepaalde locatie beschikbaar is op de planner. |
| Verwijzing | Hiermee wordt het aantal scheduler-referentiegegevens verhoogd. |
| RegisterShutdownEvent | Zorgt ervoor dat de Windows-gebeurtenisgreep die is doorgegeven in de _Event parameter gesignaleerd wordt wanneer de scheduler afsluit 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. |
| Uitbrengen | Hiermee wordt de scheduler-referentietelling verminderd. |
| ResetDefaultSchedulerPolicy | Hiermee stelt u het standaardbeleid voor scheduler opnieuw in op de standaardinstelling voor runtime. De volgende keer dat een standaardplanner wordt gemaakt, worden de standaardbeleidsinstellingen van runtime gebruikt. |
| ScheduleTask | Overbelast. Hiermee wordt een lichtgewicht taak binnen de planner gepland. 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. |
| SetDefaultSchedulerPolicy | Hiermee kan een door de gebruiker gedefinieerd beleid worden gebruikt om de standaardplanner te maken. Deze methode kan alleen worden aangeroepen wanneer er geen standaardplanner bestaat binnen het proces. Nadat een standaardbeleid is ingesteld, blijft dit van kracht totdat de volgende geldige oproep naar de methode SetDefaultSchedulerPolicyResetDefaultSchedulerPolicy wordt uitgevoerd. |
Opmerkingen
De Runtime-scheduler voor gelijktijdigheid maakt gebruik van uitvoeringscontexten, die worden toegewezen aan de uitvoeringscontexten van het besturingssysteem, zoals een thread, om het werk uit te voeren dat door uw toepassing in de wachtrij wordt geplaatst. Op elk gewenst moment is het gelijktijdigheidsniveau van een scheduler gelijk aan het aantal virtuele processoren dat eraan is verleend door Resource Manager. Een virtuele processor is een abstractie voor een verwerkingsresource en wordt toegewezen aan een hardwarethread op het onderliggende systeem. Slechts één scheduler-context kan op een bepaald moment worden uitgevoerd op een virtuele processor.
De Gelijktijdigheidsruntime maakt een standaardplanner per proces om parallel werk uit te voeren. Daarnaast kunt u uw eigen scheduler-exemplaren maken en bewerken met behulp van deze klasse.
Overnamehiërarchie
Scheduler
Requirements
Koptekst: concrt.h
Naamruimte: concurrentie
Bijvoegen
Koppelt de scheduler aan de aanroepende context. Nadat deze methode is geretourneerd, wordt de aanroepende context beheerd door de scheduler en wordt de scheduler de huidige scheduler.
virtual void Attach() = 0;
Opmerkingen
Als u een scheduler koppelt, wordt impliciet een verwijzing bij de scheduler geplaatst.
Op een bepaald moment in de toekomst moet u 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.
Met deze methode wordt een improper_scheduler_attach uitzondering gegenereerd als deze scheduler de huidige scheduler van de aanroepende context is.
Create
Hiermee maakt u een nieuwe taakscheduler waarvan het gedrag wordt beschreven door de _Policy-parameter, plaatst u een initiële referentie naar de scheduler en retourneert u een pointer ernaar.
static Scheduler* __cdecl Create(const SchedulerPolicy& _Policy);
Parameterwaarden
_Beleid
Het scheduler-beleid dat het gedrag van de zojuist gemaakte scheduler beschrijft.
Retourwaarde
Een aanwijzer naar een zojuist gemaakte planner. Dit Scheduler object heeft een initiële referentieaantal.
Opmerkingen
Nadat een scheduler met de Create methode is gemaakt, moet u de Release methode op een bepaald moment in de toekomst aanroepen om het eerste aantal verwijzingen te verwijderen en de scheduler af te sluiten.
Een scheduler die met deze methode is gemaakt, is niet gekoppeld aan de aanroepende context. Deze kan worden gekoppeld aan een context met behulp van de methode Attach .
Deze methode kan verschillende uitzonderingen genereren, waaronder scheduler_resource_allocation_error en invalid_scheduler_policy_value.
MaakPlanningGroep
Hiermee maakt u een nieuwe planningsgroep binnen de planner. 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.
virtual ScheduleGroup* CreateScheduleGroup() = 0;
virtual ScheduleGroup* CreateScheduleGroup(location& _Placement) = 0;
Parameterwaarden
_Plaatsing
Een verwijzing naar een locatie waar de taken binnen de planningsgroep de voorkeur krijgen om daar uitgevoerd te worden.
Retourwaarde
Een aanwijzer naar de zojuist gemaakte planningsgroep. Dit ScheduleGroup object heeft een eerste verwijzingsaantal.
Opmerkingen
U moet de Release-methode in een planningsgroep aanroepen wanneer u klaar bent met het plannen van taken. De scheduler vernietigt de planningsgroep wanneer al het werk dat eraan is toegewezen, is voltooid.
Als u deze planner expliciet hebt aangemaakt, moet u alle verwijzingen naar de groepen binnen deze vrijgeven voordat u uw verwijzingen naar de planner vrijgeeft.
AantalVirtueleProcessorenOphalen
Retourneert het huidige aantal virtuele processors voor de scheduler.
virtual unsigned int GetNumberOfVirtualProcessors() const = 0;
Retourwaarde
Het huidige aantal virtuele processors voor de planner.
GetPolicy
Retourneert een kopie van het beleid waarmee de scheduler is gemaakt.
virtual SchedulerPolicy GetPolicy() const = 0;
Retourwaarde
Een kopie van het beleid waarmee de planner is gemaakt.
Identiteitsbewijs
Retourneert een unieke identifier voor de scheduler.
virtual unsigned int Id() const = 0;
Retourwaarde
Een unieke id voor de scheduler.
IsBeschikbareLocatie
Bepaalt of een bepaalde locatie beschikbaar is op de planner.
virtual bool IsAvailableLocation(const location& _Placement) const = 0;
Parameterwaarden
_Plaatsing
Een verwijzing naar de locatie waarover de planner moet worden bevraagd.
Retourwaarde
Een indicatie of de locatie die door het _Placement argument is opgegeven, al dan niet beschikbaar is op de planner.
Opmerkingen
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.
Reference
Hiermee wordt het aantal scheduler-referentiegegevens verhoogd.
virtual unsigned int Reference() = 0 ;
Retourwaarde
Het zojuist opgetelde referentieaantal.
Opmerkingen
Dit wordt meestal gebruikt om de levensduur van de planningsmodule voor samenstelling te beheren. Wanneer het aantal verwijzingen van een scheduler op nul komt, zal de scheduler worden afgesloten en vernietigd nadat alle werkzaamheden op de scheduler zijn voltooid.
De methode genereert een improper_scheduler_reference uitzondering als het verwijzingsaantal voordat de Reference methode werd aangeroepen nul was en de aanroep wordt uitgevoerd vanuit een context die niet eigendom is van de scheduler.
RegisterShutdownEvent
Zorgt ervoor dat de Windows-gebeurtenisgreep die is doorgegeven in de _Event parameter gesignaleerd wordt wanneer de scheduler afsluit 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.
virtual void RegisterShutdownEvent(HANDLE _Event) = 0;
Parameterwaarden
_Gebeurtenis
Een ingang naar een Windows-gebeurtenisobject dat wordt gesignaleerd door de runtime wanneer de scheduler wordt afgesloten en zichzelf vernietigt.
Vrijgeven
Hiermee wordt de scheduler-referentietelling verminderd.
virtual unsigned int Release() = 0;
Retourwaarde
Het nieuw afgebroken referentieaantal.
Opmerkingen
Dit wordt meestal gebruikt om de levensduur van de scheduler voor samenstelling te beheren. Wanneer het aantal verwijzingen van een taakplanner op nul valt, wordt de taakplanner afgesloten en vernietigd nadat alle taken op de taakplanner zijn voltooid.
ResetDefaultSchedulerPolicy
Hiermee stelt u het standaardbeleid voor scheduler opnieuw in op de standaardinstelling voor runtime. De volgende keer dat een standaardplanner wordt gemaakt, worden de standaardbeleidsinstellingen van runtime gebruikt.
static void __cdecl ResetDefaultSchedulerPolicy();
Opmerkingen
Deze methode kan worden aangeroepen terwijl er een standaardplanner bestaat binnen het proces. Dit heeft geen invloed op het beleid van de bestaande standaardplanner. Als de standaardplanner echter zou worden afgesloten en op een later tijdstip een nieuwe standaardwaarde zou worden gemaakt, zou de nieuwe planner de standaardbeleidsinstellingen voor runtime gebruiken.
Taakplanner
Een object van de Scheduler klasse kan alleen worden gemaakt met behulp van factory-methoden of impliciet.
Scheduler();
Opmerkingen
De standaardplanner van het proces wordt impliciet gemaakt wanneer u veel van de runtimefuncties gebruikt waarvoor een scheduler moet worden gekoppeld aan de aanroepende context. Methoden binnen de CurrentScheduler klasse en functies van de PPL- en agents-lagen voeren doorgaans impliciete bijlagen uit.
U kunt ook expliciet een scheduler maken via de CurrentScheduler::Create methode of de Scheduler::Create methode.
~Planner
Een object van de klasse wordt impliciet vernietigd wanneer alle externe verwijzingen naar de Scheduler klasse niet meer bestaan.
virtual ~Scheduler();
ScheduleTask
Hiermee wordt een lichtgewicht taak binnen de planner gepland. 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.
virtual void ScheduleTask(
TaskProc _Proc,
_Inout_opt_ void* _Data) = 0;
virtual void ScheduleTask(
TaskProc _Proc,
_Inout_opt_ void* _Data,
location& _Placement) = 0;
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.
SetDefaultSchedulerPolicy
Hiermee kan een door de gebruiker gedefinieerd beleid worden gebruikt om de standaardplanner te maken. Deze methode kan alleen worden aangeroepen wanneer er geen standaardplanner bestaat binnen het proces. Nadat een standaardbeleid is ingesteld, blijft dit van kracht totdat de volgende geldige oproep naar de methode SetDefaultSchedulerPolicyResetDefaultSchedulerPolicy wordt uitgevoerd.
static void __cdecl SetDefaultSchedulerPolicy(const SchedulerPolicy& _Policy);
Parameterwaarden
_Beleid
Het beleid dat moet worden ingesteld als het standaard scheduler-beleid.
Opmerkingen
Als de SetDefaultSchedulerPolicy methode wordt aangeroepen wanneer er al een standaardplanner bestaat binnen het proces, genereert de runtime een default_scheduler_exists uitzondering.
Zie ook
concurrentie Namespace
Scheduler-klasse
PolicyElementKey
Taakplanner