CurrentScheduler – třída

Představuje abstrakci aktuálního plánovače přidruženého k kontextu volání.

Syntaxe

class CurrentScheduler;

Členové

Veřejné metody

Název Popis
Vytvořit Vytvoří nový plánovač, jehož chování je popsáno parametrem _Policy a připojí ho k volajícímu kontextu. Nově vytvořený plánovač se stane aktuálním plánovačem pro kontext volání.
CreateScheduleGroup Přetíženo. Vytvoří novou skupinu plánů v plánovači přidruženém k kontextu volání. Verze, která přebírá parametr _Placement , způsobí, že úkoly v nově vytvořené skupině plánů budou zkreslené vůči provádění v umístění určeném tímto parametrem.
Detach Odpojí aktuální plánovač z kontextu volání a obnoví dříve připojený plánovač jako aktuální plánovač, pokud existuje. Po vrácení této metody je volající kontext pak spravován plánovačem, který byl dříve připojen k kontextu pomocí CurrentScheduler::Create nebo Scheduler::Attach metody.
Získat Vrátí ukazatel na plánovač, který je přidružen k volajícímu kontextu a je také označován jako aktuální plánovač.
ZískatPočetVirtuálníchProcesorů Vrátí aktuální počet virtuálních procesorů pro plánovač přidružený k kontextu volání.
GetPolicy Vrátí kopii politiky, se kterou byl vytvořen aktuální plánovač.
Id Vrátí jedinečný identifikátor aktuálního plánovače.
IsAvailableLocation Určuje, zda je dané umístění dostupné v aktuálním plánovači.
RegisterShutdownEvent Způsobí, že událostní rukojeť systému Windows předaná v parametru _ShutdownEvent je signalizována, když plánovač přidružený k aktuálnímu kontextu se vypne a zničí sám. V době, kdy je událost signalizována, je dokončena veškerá práce naplánovaná plánovači. Pomocí této metody lze zaregistrovat více událostí vypnutí.
ScheduleTask Přetíženo. Naplánuje lehkou úlohu v plánovači přidruženém k kontextu volání. Úloha s nízkou hmotností bude umístěna ve skupině plánu určené modulem runtime. Verze, která přebírá parametr _Placement, způsobí, že úloha bude upřednostňovat spuštění v zadaném umístění.

Poznámky

Pokud neexistuje žádný plánovač (viz Plánovač) přidružený k kontextu volání, mnoho metod v rámci CurrentScheduler třídy způsobí přílohu výchozího plánovače procesu. To může také znamenat, že se během takového volání vytvoří výchozí plánovač procesu.

Hierarchie dědičnosti

CurrentScheduler

Požadavky

Hlavička: concrt.h

Obor názvů: souběžnost

Vytvořte

Vytvoří nový plánovač, jehož chování je popsáno parametrem _Policy a připojí ho k volajícímu kontextu. Nově vytvořený plánovač se stane aktuálním plánovačem pro kontext volání.

static void __cdecl Create(const SchedulerPolicy& _Policy);

Parametry

_Politika
Zásady plánovače, které popisují chování nově vytvořeného plánovače.

Poznámky

Připojení plánovače ke kontextu volání implicitně nastaví referenční počet na plánovač.

Po vytvoření plánovače metodou Create je nutné v určitém okamžiku v budoucnu zavolat metodu CurrentScheduler::Detach, aby se plánovač mohl správně ukončit.

Pokud je tato metoda volána z kontextu, který je již připojen k jinému plánovači, stávající plánovač se zapamatuje jako předchozí plánovač a nově vytvořený plánovač se stane aktuálním plánovačem. Při volání CurrentScheduler::Detach metody v pozdějším bodě se předchozí plánovač obnoví jako aktuální plánovač.

Tato metoda může vyvolat řadu výjimek, včetně scheduler_resource_allocation_error a invalid_scheduler_policy_value.

VytvořitSkupinuPlánů

Vytvoří novou skupinu plánů v plánovači přidruženém k kontextu volání. Verze, která přebírá parametr _Placement , způsobí, že úkoly v nově vytvořené skupině plánů budou zkreslené vůči provádění v umístění určeném tímto parametrem.

static ScheduleGroup* __cdecl CreateScheduleGroup();

static ScheduleGroup* __cdecl CreateScheduleGroup(location& _Placement);

Parametry

_Umístění
Odkaz na místo, kde budou úkoly ve skupině harmonogramu preferenčně vykonávány.

Návratová hodnota

Ukazatel na nově vytvořenou skupinu plánování. Tento ScheduleGroup objekt má přiřazený počáteční počet referencí.

Poznámky

Tato metoda způsobí, že se vytvoří výchozí plánovač procesu nebo připojí k kontextu volání, pokud není k kontextu volání aktuálně přidružený žádný plánovač.

Po dokončení plánování práce na ní musíte vyvolat metodu Release ve skupině plánů. Plánovač zničí plánovací skupinu, jakmile se dokončí všechny úkoly zařazené do něj.

Mějte na paměti, že pokud jste tento plánovač explicitně vytvořili, musíte uvolnit všechny odkazy na skupiny plánovače v něm, než uvolníte svůj odkaz na plánovač, odpojením aktuálního kontextu od něj.

Odpojit

Odpojí aktuální plánovač z kontextu volání a obnoví dříve připojený plánovač jako aktuální plánovač, pokud existuje. Po vrácení této metody je volající kontext pak spravován plánovačem, který byl dříve připojen k kontextu pomocí CurrentScheduler::Create nebo Scheduler::Attach metody.

static void __cdecl Detach();

Poznámky

Metoda Detach implicitně odebere referenční počítadlo z plánovače.

Pokud není ke kontextu volání připojen žádný plánovač, volání této metody způsobí, že bude vyvolána výjimka scheduler_not_attached.

Volání této metody z kontextu, který je interní a spravovaný plánovačem, nebo z kontextu připojeného pomocí jiné metody, než jsou metody Scheduler::Attach nebo CurrentScheduler::Create, vyvolá výjimku improper_scheduler_detach.

Získat

Vrátí ukazatel na plánovač, který je přidružen k volajícímu kontextu a je také označován jako aktuální plánovač.

static Scheduler* __cdecl Get();

Návratová hodnota

Ukazatel na plánovač přidružený k kontextu volání (aktuální plánovač).

Poznámky

Tato metoda způsobí, že se vytvoří výchozí plánovač procesu nebo připojí k kontextu volání, pokud není k kontextu volání aktuálně přidružený žádný plánovač. Na objekt vrácený touto metodou se nepřidává žádný další odkaz.

GetNumberOfVirtualProcessors

Vrátí aktuální počet virtuálních procesorů pro plánovač přidružený k kontextu volání.

static unsigned int __cdecl GetNumberOfVirtualProcessors();

Návratová hodnota

Pokud je plánovač přidružený k kontextu volání, aktuální počet virtuálních procesorů pro tento plánovač; jinak hodnota -1.

Poznámky

Tato metoda nebude mít za následek přílohu plánovače, pokud kontext volání ještě není přidružený k plánovači.

Návratová hodnota této metody je okamžité vzorkování počtu virtuálních procesorů pro plánovači přidruženému k volajícímu kontextu. Tato hodnota může být zastaralá v okamžiku, kdy se vrátí.

GetPolicy

Vrátí kopii politiky, se kterou byl vytvořen aktuální plánovač.

static SchedulerPolicy __cdecl GetPolicy();

Návratová hodnota

Kopie zásady, se kterou byl aktuální plánovač vytvořen.

Poznámky

Tato metoda způsobí, že se vytvoří výchozí plánovač procesu nebo připojí k kontextu volání, pokud není k kontextu volání aktuálně přidružený žádný plánovač.

ID

Vrátí jedinečný identifikátor aktuálního plánovače.

static unsigned int __cdecl Id();

Návratová hodnota

Pokud je plánovač přidružený k kontextu volání, jedinečný identifikátor pro tento plánovač; jinak hodnota -1.

Poznámky

Tato metoda nebude mít za následek přílohu plánovače, pokud kontext volání ještě není přidružený k plánovači.

JeDostupnáLokace

Určuje, zda je dané umístění dostupné v aktuálním plánovači.

static bool __cdecl IsAvailableLocation(const location& _Placement);

Parametry

_Umístění
Odkaz na umístění, na kterém se můžete dotázat aktuálního plánovače.

Návratová hodnota

Označení, zda je umístění určené argumentem _Placement k dispozici v aktuálním plánovači.

Poznámky

Tato metoda nebude mít za následek přílohu plánovače, pokud kontext volání ještě není přidružený k plánovači.

Všimněte si, že návratová hodnota je okamžité vzorkování toho, jestli je dané umístění dostupné. Když existuje více plánovačů, může dynamická správa prostředků kdykoli přidávat nebo odebírat zdroje od plánovačů. Pokud k tomu dojde, může dané umístění změnit dostupnost.

RegisterShutdownEvent

Způsobí, že událostní rukojeť systému Windows předaná v parametru _ShutdownEvent je signalizována, když plánovač přidružený k aktuálnímu kontextu se vypne a zničí sám. V době, kdy je událost signalizována, je dokončena veškerá práce naplánovaná plánovači. Pomocí této metody lze zaregistrovat více událostí vypnutí.

static void __cdecl RegisterShutdownEvent(HANDLE _ShutdownEvent);

Parametry

_ShutdownEvent
Popisovač objektu události systému Windows, který bude signalován modulem runtime, když plánovač přidružený k aktuálnímu kontextu ukončí činnost a zničí se.

Poznámky

Pokud není ke kontextu volání připojen žádný plánovač, volání této metody způsobí, že bude vyvolána výjimka scheduler_not_attached.

Naplánovat úkol

Naplánuje lehkou úlohu v plánovači přidruženém k kontextu volání. Úloha s nízkou hmotností bude umístěna ve skupině plánu určené modulem runtime. Verze, která přebírá parametr _Placement, způsobí, že úloha bude upřednostňovat spuštění v zadaném umístění.

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

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

Parametry

_Proc
Ukazatel na funkci, která se má vykonat, aby se vykonalo tělo lehké úlohy.

_Data
Ukazatel typu void na data, která se předají jako parametr tělu úkolu.

_Umístění
Odkaz na místo, kde bude lehký úkol upřednostněn pro provedení na místě.

Poznámky

Tato metoda způsobí, že se vytvoří výchozí plánovač procesu nebo připojí k kontextu volání, pokud není k kontextu volání aktuálně přidružený žádný plánovač.

Viz také

concurrency – obor názvů
Třída plánovače
PolicyElementKey
Plánovač úloh