Sdílet prostřednictvím


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

Jméno 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č přidružený k volajícímu kontextu, který se označuje také jako aktuální plánovač.
GetNumberOfVirtualProcessors Vrátí aktuální počet virtuálních procesorů pro plánovač přidružený k kontextu volání.
GetPolicy Vrátí kopii zásady, se kterou byl aktuální plánovač vytvořen.
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 obslužná rutina události Systému Windows předaná v parametru _ShutdownEvent se signalizují, když plánovač přidružený k aktuálnímu kontextu vypne a zničí sám sebe. V době, kdy je událost signalizována, je dokončena veškerá práce naplánovaná plánovači. Tuto metodu 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 zkreslená vůči 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ření

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

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

Poznámky

Příloha plánovače na kontext volání implicitně umístí počet odkazů na plánovač.

Po vytvoření plánovače s metodou Create je nutné volat CurrentScheduler::D etach metoda v určitém okamžiku v budoucnu, aby plánovač mohl vypnout.

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.

CreateScheduleGroup

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 umístění, kde budou úkoly v rámci skupiny plánů zkreslené směrem k provádění.

Vrácená hodnota

Ukazatel na nově vytvořenou skupinu plánů Tento ScheduleGroup objekt má vložený počáteční počet odkazů.

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čí skupinu plánů, jakmile se dokončí všechna práce zařazená do fronty.

Mějte na paměti, že pokud jste tento plánovač explicitně vytvořili, musíte uvolnit všechny odkazy na skupiny plánů v něm, a teprve potom ho uvolnit v plánovači odpojením aktuálního kontextu.

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 počet odkazů z plánovače.

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

Volání této metody z kontextu, který je interní pro a spravuje plánovač nebo kontext připojený pomocí jiné metody než Scheduler::Attach nebo CurrentScheduler::Create metody, způsobí vyvolá improper_scheduler_detach výjimku.

Získat

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

static Scheduler* __cdecl Get();

Vrácená 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 není umístěn Scheduler žá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();

Vrácená 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 z této metody je okamžitý vzorkování počtu virtuálních procesorů pro plánovač přidružený k volajícímu kontextu. Tato hodnota může být zastaralá v okamžiku, kdy se vrátí.

GetPolicy

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

static SchedulerPolicy __cdecl GetPolicy();

Vrácená 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();

Vrácená 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.

IsAvailableLocation

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í pro dotazování aktuálního plánovače.

Vrácená 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é. Při přítomnosti více plánovačů může dynamická správa prostředků přidávat nebo od plánovačů v libovolném okamžiku od zdrojů od zdrojů. Pokud k tomu dojde, může dané umístění změnit dostupnost.

RegisterShutdownEvent

Způsobí, že obslužná rutina události Systému Windows předaná v parametru _ShutdownEvent se signalizují, když plánovač přidružený k aktuálnímu kontextu vypne a zničí sám sebe. V době, kdy je událost signalizována, je dokončena veškerá práce naplánovaná plánovači. Tuto metodu 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 vypne a zničí sám sebe.

Poznámky

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

ScheduleTask

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 zkreslená vůči 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á provést, aby se provedlo tělo lehké úlohy.

_Dat
Ukazatel void na data, která se předají jako parametr textu úkolu.

_Umístění
Odkaz na místo, kde bude úkol s nízkou hmotností zkreslený směrem k provádění 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ů
Scheduler – třída
PolicyElementKey
Plánovač úloh