Condividi tramite


Classe CurrentScheduler

Rappresenta un'astrazione per l'utilità di pianificazione corrente associata al contesto di chiamata.

Sintassi

class CurrentScheduler;

Membri

Metodi pubblici

Nome Descrizione
Crea Crea un nuovo utilità di pianificazione il _Policy cui comportamento viene descritto dal parametro e lo associa al contesto chiamante. L'utilità di pianificazione appena creata diventerà l'utilità di pianificazione corrente per il contesto chiamante.
CreateScheduleGroup Con overload. Crea un nuovo gruppo di pianificazione all'interno dell'utilità di pianificazione associata al contesto chiamante. La versione che accetta il parametro _Placement causa la distorsione delle attività all'interno del gruppo di pianificazione appena creato verso l'esecuzione nel percorso specificato da tale parametro.
Scollega Scollega l'utilità di pianificazione corrente dal contesto chiamante e ripristina l'utilità di pianificazione collegata in precedenza come utilità di pianificazione corrente, se presente. Al termine di questo metodo, il contesto chiamante viene quindi gestito dall'utilità di pianificazione collegata in precedenza al contesto usando il CurrentScheduler::Create metodo o Scheduler::Attach .
GET Restituisce un puntatore all'utilità di pianificazione associata al contesto chiamante, detto anche utilità di pianificazione corrente.
GetNumberOfVirtualProcessors Restituisce il numero corrente di processori virtuali per l'utilità di pianificazione associata al contesto chiamante.
GetPolicy Restituisce una copia dei criteri con cui è stato creato l'utilità di pianificazione corrente.
Id Restituisce un identificatore univoco per l'utilità di pianificazione corrente.
IsAvailableLocation Determina se una posizione specificata è disponibile nell'utilità di pianificazione corrente.
RegisterShutdownEvent Fa in modo che l'handle dell'evento di Windows passato nel _ShutdownEvent parametro venga segnalato quando l'utilità di pianificazione associata al contesto corrente si arresta ed elimina se stessa. Al momento della segnalazione dell'evento, tutto il lavoro pianificato per l'utilità di pianificazione è stato completato. È possibile registrare più eventi di arresto tramite questo metodo.
ScheduleTask Con overload. Pianifica un'attività leggera all'interno dell'utilità di pianificazione associata al contesto chiamante. L'attività leggera sarà posizionata in un gruppo di pianificazione determinato dal runtime. La versione che accetta il parametro _Placement comporta che per l'attività venga data priorità all'esecuzione nella posizione specificata.

Osservazioni:

Se non è presente alcuna utilità di pianificazione (vedere Utilità di pianificazione) associata al contesto chiamante, molti metodi all'interno della CurrentScheduler classe genereranno un allegato dell'utilità di pianificazione predefinita del processo. Ciò può anche implicare che l'utilità di pianificazione predefinita del processo venga creata durante tale chiamata.

Gerarchia di ereditarietà

CurrentScheduler

Requisiti

Intestazione: concrt.h

Spazio dei nomi: Concurrency

Creazione

Crea un nuovo utilità di pianificazione il _Policy cui comportamento viene descritto dal parametro e lo associa al contesto chiamante. L'utilità di pianificazione appena creata diventerà l'utilità di pianificazione corrente per il contesto chiamante.

static void __cdecl Create(const SchedulerPolicy& _Policy);

Parametri

_Politica
Criteri dell'utilità di pianificazione che descrivono il comportamento dell'utilità di pianificazione appena creata.

Osservazioni:

L'allegato dell'utilità di pianificazione al contesto chiamante inserisce implicitamente un conteggio dei riferimenti nell'utilità di pianificazione.

Dopo aver creato un'utilità di pianificazione con il Create metodo , è necessario chiamare il metodo CurrentScheduler::D etach in un determinato momento in futuro per consentire all'utilità di pianificazione di arrestarsi.

Se questo metodo viene chiamato da un contesto già collegato a un'utilità di pianificazione diversa, l'utilità di pianificazione esistente viene memorizzata come utilità di pianificazione precedente e l'utilità di pianificazione appena creata diventa l'utilità di pianificazione corrente. Quando si chiama il CurrentScheduler::Detach metodo in un secondo momento, l'utilità di pianificazione precedente viene ripristinata come utilità di pianificazione corrente.

Questo metodo può generare diverse eccezioni, tra cui scheduler_resource_allocation_error e invalid_scheduler_policy_value.

CreateScheduleGroup

Crea un nuovo gruppo di pianificazione all'interno dell'utilità di pianificazione associata al contesto chiamante. La versione che accetta il parametro _Placement causa la distorsione delle attività all'interno del gruppo di pianificazione appena creato verso l'esecuzione nel percorso specificato da tale parametro.

static ScheduleGroup* __cdecl CreateScheduleGroup();

static ScheduleGroup* __cdecl CreateScheduleGroup(location& _Placement);

Parametri

_Collocamento
Riferimento a una posizione in cui le attività all'interno del gruppo di pianificazione verranno distorte verso l'esecuzione in.

Valore restituito

Puntatore al gruppo di pianificazione appena creato. Questo ScheduleGroup oggetto ha un conteggio dei riferimenti iniziale posizionato su di esso.

Osservazioni:

Tale metodo determinerà la creazione dell'utilità di pianificazione predefinita del processo e/o il collegamento al contesto di chiamata se non è presente alcuna utilità di pianificazione attualmente associata al contesto di chiamata.

È necessario richiamare il metodo Release in un gruppo di pianificazione al termine della pianificazione. L'utilità di pianificazione eliminerà definitivamente il gruppo di pianificazione al termine di tutte le operazioni in coda.

Si noti che se l'utilità di pianificazione è stata creata in modo esplicito, è necessario rilasciare tutti i riferimenti ai gruppi di pianificazione al suo interno, prima di rilasciare il riferimento nell'utilità di pianificazione scollegando il contesto corrente da esso.

Detach

Scollega l'utilità di pianificazione corrente dal contesto chiamante e ripristina l'utilità di pianificazione collegata in precedenza come utilità di pianificazione corrente, se presente. Al termine di questo metodo, il contesto chiamante viene quindi gestito dall'utilità di pianificazione collegata in precedenza al contesto usando il CurrentScheduler::Create metodo o Scheduler::Attach .

static void __cdecl Detach();

Osservazioni:

Il Detach metodo rimuove in modo implicito un conteggio dei riferimenti dall'utilità di pianificazione.

Se al contesto chiamante non è associata alcuna utilità di pianificazione, la chiamata a questo metodo comporterà la generazione di un'eccezione scheduler_not_attached .

Chiamando questo metodo da un contesto interno a e gestito da un'utilità di pianificazione o da un contesto collegato tramite un metodo diverso dai metodi Scheduler::Attach o CurrentScheduler::Create , verrà generata un'eccezione improper_scheduler_detach .

Recupero

Restituisce un puntatore all'utilità di pianificazione associata al contesto chiamante, detto anche utilità di pianificazione corrente.

static Scheduler* __cdecl Get();

Valore restituito

Puntatore all'utilità di pianificazione associata al contesto chiamante (l'utilità di pianificazione corrente).

Osservazioni:

Tale metodo determinerà la creazione dell'utilità di pianificazione predefinita del processo e/o il collegamento al contesto di chiamata se non è presente alcuna utilità di pianificazione attualmente associata al contesto di chiamata. Nessun riferimento aggiuntivo viene inserito nell'oggetto Scheduler restituito da questo metodo.

GetNumberOfVirtualProcessors

Restituisce il numero corrente di processori virtuali per l'utilità di pianificazione associata al contesto chiamante.

static unsigned int __cdecl GetNumberOfVirtualProcessors();

Valore restituito

Se un'utilità di pianificazione è associata al contesto chiamante, il numero corrente di processori virtuali per tale utilità di pianificazione; in caso contrario, il valore -1.

Osservazioni:

Questo metodo non comporterà l'allegato dell'utilità di pianificazione se il contesto chiamante non è già associato a un'utilità di pianificazione.

Il valore restituito da questo metodo è un campionamento istantaneo del numero di processori virtuali per l'utilità di pianificazione associata al contesto chiamante. Questo valore può non essere aggiornato nel momento in cui viene restituito.

GetPolicy

Restituisce una copia dei criteri con cui è stato creato l'utilità di pianificazione corrente.

static SchedulerPolicy __cdecl GetPolicy();

Valore restituito

Copia dei criteri con cui è stato creato l'utilità di pianificazione corrente.

Osservazioni:

Tale metodo determinerà la creazione dell'utilità di pianificazione predefinita del processo e/o il collegamento al contesto di chiamata se non è presente alcuna utilità di pianificazione attualmente associata al contesto di chiamata.

ID.

Restituisce un identificatore univoco per l'utilità di pianificazione corrente.

static unsigned int __cdecl Id();

Valore restituito

Se un'utilità di pianificazione è associata al contesto chiamante, un identificatore univoco per tale utilità di pianificazione; in caso contrario, il valore -1.

Osservazioni:

Questo metodo non comporterà l'allegato dell'utilità di pianificazione se il contesto chiamante non è già associato a un'utilità di pianificazione.

IsAvailableLocation

Determina se una posizione specificata è disponibile nell'utilità di pianificazione corrente.

static bool __cdecl IsAvailableLocation(const location& _Placement);

Parametri

_Collocamento
Riferimento alla posizione riguardo alla quale eseguire una query sull'utilità di pianificazione corrente.

Valore restituito

Indicazione dell'eventuale disponibilità della posizione specificata dall'argomento _Placement nell'utilità di pianificazione corrente.

Osservazioni:

Questo metodo non comporterà l'allegato dell'utilità di pianificazione se il contesto chiamante non è già associato a un'utilità di pianificazione.

Si noti che il valore restituito è un campionamento istantaneo dell'eventuale disponibilità della posizione specificata. In presenza di più utilità di pianificazione, tramite la gestione delle risorse dinamiche è possibile aggiungere o sottrarre risorse dalle utilità di pianificazione in qualsiasi punto. In questo caso, la disponibilità della posizione specificata può cambiare.

RegisterShutdownEvent

Fa in modo che l'handle dell'evento di Windows passato nel _ShutdownEvent parametro venga segnalato quando l'utilità di pianificazione associata al contesto corrente si arresta ed elimina se stessa. Al momento della segnalazione dell'evento, tutto il lavoro pianificato per l'utilità di pianificazione è stato completato. È possibile registrare più eventi di arresto tramite questo metodo.

static void __cdecl RegisterShutdownEvent(HANDLE _ShutdownEvent);

Parametri

_ShutdownEvent
Handle per un oggetto evento di Windows che verrà segnalato dal runtime quando l'utilità di pianificazione associata al contesto corrente viene arrestata e viene eliminata definitivamente.

Osservazioni:

Se al contesto chiamante non è associata alcuna utilità di pianificazione, la chiamata a questo metodo comporterà la generazione di un'eccezione scheduler_not_attached .

ScheduleTask

Pianifica un'attività leggera all'interno dell'utilità di pianificazione associata al contesto chiamante. L'attività leggera sarà posizionata in un gruppo di pianificazione determinato dal runtime. La versione che accetta il parametro _Placement comporta che per l'attività venga data priorità all'esecuzione nella posizione specificata.

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

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

Parametri

_Proc
Puntatore alla funzione da eseguire per eseguire il corpo dell'attività leggera.

_Dati
Puntatore void ai dati che verranno passati come parametro al corpo dell'attività.

_Collocamento
Riferimento a una posizione in cui per l'attività leggera verrà data priorità all'esecuzione.

Osservazioni:

Tale metodo determinerà la creazione dell'utilità di pianificazione predefinita del processo e/o il collegamento al contesto di chiamata se non è presente alcuna utilità di pianificazione attualmente associata al contesto di chiamata.

Vedi anche

Spazio dei nomi concurrency
Classe Scheduler
PolicyElementKey
Utilità di pianificazione