Share via


CurrentScheduler (Clase)

Representa una abstracción para el programador actual asociado al contexto de la llamada.

Sintaxis

class CurrentScheduler;

Miembros

Métodos públicos

Nombre Descripción
Crear Crea un nuevo programador cuyo comportamiento se describe mediante el parámetro _Policy y lo asocia al contexto de llamada. El programador recién creado se convertirá en el programador actual para el contexto de llamada.
CreateScheduleGroup Con sobrecarga. Crea un nuevo grupo de programación dentro del programador asociado al contexto de llamada. La versión que toma el parámetro _Placement hace que las tareas del grupo de programación recién creado estén sesgadas a ejecutarse en la ubicación especificada por ese parámetro.
Separar Desasocia el programador actual del contexto de llamada y restaura el programador asociado previamente como programador actual, si existe alguno. Una vez devuelto este método, el programador administra el contexto de llamada asociado previamente al contexto mediante el método CurrentScheduler::Create o Scheduler::Attach.
Get Devuelve un puntero al programador asociado al contexto de llamada; también denominado programador actual.
GetNumberOfVirtualProcessors Devuelve el número actual de procesadores virtuales para el programador asociado al contexto de llamada.
GetPolicy Devuelve una copia de la directiva con la que se creó el programador actual.
Id Devuelve un identificador único para el programador actual.
IsAvailableLocation Determina si una ubicación determinada está disponible en el programador actual.
RegisterShutdownEvent Hace que se envíe una señal al manipulador de eventos de Windows que se pasó en el parámetro _ShutdownEvent cuando el programador asociado con el contexto actual se apaga y se autodestruye. En el momento en que se señala el evento, se completa todo el trabajo que se había programado para el programador. Se pueden registrar varios eventos de apagado a través de este método.
ScheduleTask Con sobrecarga. Programa una tarea ligera en el programador asociado al contexto de llamada. La tarea ligera se colocará en un grupo de programación determinado por el runtime. La versión que toma el parámetro _Placement hace que la tarea esté sesgada hacia la ejecución en la ubicación especificada.

Comentarios

Si no hay ningún programador (consulte Scheduler) asociado al contexto de llamada, muchos métodos de la clase CurrentScheduler darán como resultado la asociación del programador predeterminado del proceso. Esto también puede implicar que el programador predeterminado del proceso se cree durante dicha llamada.

Jerarquía de herencia

CurrentScheduler

Requisitos

Encabezado: concrt.h

Espacio de nombres: simultaneidad

Crear

Crea un nuevo programador cuyo comportamiento se describe mediante el parámetro _Policy y lo asocia al contexto de llamada. El programador recién creado se convertirá en el programador actual para el contexto de llamada.

static void __cdecl Create(const SchedulerPolicy& _Policy);

Parámetros

_Policy
La directiva de programador que describe el comportamiento del programador recién creado.

Comentarios

La asociación del programador al contexto de llamada coloca implícitamente un recuento de referencia en el programador.

Después de crear un programador con el método Create, debe llamar al método CurrentScheduler::Detach en algún momento en el futuro para que el programador se apague.

Si se llama a este método desde un contexto que ya está asociado a un programador diferente, el programador existente se recuerda como el programador anterior y el programador recién creado se convierte en el programador actual. Cuando se llama al método CurrentScheduler::Detach en un momento posterior, el programador anterior se restaura como el programador actual.

Este método puede producir una variedad de excepciones, incluidas scheduler_resource_allocation_error e invalid_scheduler_policy_value.

CreateScheduleGroup

Crea un nuevo grupo de programación dentro del programador asociado al contexto de llamada. La versión que toma el parámetro _Placement hace que las tareas del grupo de programación recién creado estén sesgadas a ejecutarse en la ubicación especificada por ese parámetro.

static ScheduleGroup* __cdecl CreateScheduleGroup();

static ScheduleGroup* __cdecl CreateScheduleGroup(location& _Placement);

Parámetros

_Placement
Una referencia a una ubicación hacia la que se inclinará la ejecución de las tareas dentro del grupo de programación.

Valor devuelto

Puntero para el grupo de programación recién creado. Este objeto ScheduleGroup tiene un recuento de referencias inicial colocado en él.

Comentarios

Este método hará que se cree el programador predeterminado del proceso y se adjunte al contexto de la llamada si no hay ningún programador asociado actualmente con el contexto de la llamada.

Debe invocar el método Versión en un grupo de programación cuando haya terminado de programar el trabajo para él. El programador destruirá el grupo de programación cuando se haya completado todo el trabajo en cola en él.

Tenga en cuenta que si creó explícitamente este programador, debe liberar todas las referencias a los grupos de programación que contiene, antes de liberar la referencia en el programador, mediante la desasociación del mismo del contexto actual.

Desasociar

Desasocia el programador actual del contexto de llamada y restaura el programador asociado previamente como programador actual, si existe alguno. Una vez devuelto este método, el programador administra el contexto de llamada asociado previamente al contexto mediante el método CurrentScheduler::Create o Scheduler::Attach.

static void __cdecl Detach();

Comentarios

El método Detach quita implícitamente un recuento de referencias del programador.

Si no hay ningún programador asociado al contexto de llamada, al llamar a este método se producirá una excepción scheduler_not_attached.

Si se llama a este método desde un contexto interno y administrado por un programador, o desde un contexto que se asoció mediante un método distinto de Scheduler::Attach o CurrentScheduler::Create, se producirá una excepción improper_scheduler_detach.

Obtener

Devuelve un puntero al programador asociado al contexto de llamada; también denominado programador actual.

static Scheduler* __cdecl Get();

Valor devuelto

Un puntero al programador asociado al contexto de llamada (el programador actual).

Comentarios

Este método hará que se cree el programador predeterminado del proceso y se adjunte al contexto de la llamada si no hay ningún programador asociado actualmente con el contexto de la llamada. No se coloca ninguna referencia adicional en el objeto Scheduler devuelto por este método.

GetNumberOfVirtualProcessors

Devuelve el número actual de procesadores virtuales para el programador asociado al contexto de llamada.

static unsigned int __cdecl GetNumberOfVirtualProcessors();

Valor devuelto

Si un programador está asociado al contexto de llamada, el número actual de procesadores virtuales para ese programador; de lo contrario, el valor -1.

Comentarios

Este método no dará lugar a la asociación del programador si el contexto de llamada aún no está asociado a un programador.

El valor devuelto por este método es un muestreo instantáneo del número de procesadores virtuales para el programador asociado al contexto de llamada. Este valor puede ser obsoleto en el momento en que se devuelve.

GetPolicy

Devuelve una copia de la directiva con la que se creó el programador actual.

static SchedulerPolicy __cdecl GetPolicy();

Valor devuelto

Una copia de la directiva con la que se creó el programador actual.

Comentarios

Este método hará que se cree el programador predeterminado del proceso y se adjunte al contexto de la llamada si no hay ningún programador asociado actualmente con el contexto de la llamada.

Identificador

Devuelve un identificador único para el programador actual.

static unsigned int __cdecl Id();

Valor devuelto

Si un programador está asociado al contexto de llamada, un identificador único para ese programador; de lo contrario, el valor -1.

Comentarios

Este método no dará lugar a la asociación del programador si el contexto de llamada aún no está asociado a un programador.

IsAvailableLocation

Determina si una ubicación determinada está disponible en el programador actual.

static bool __cdecl IsAvailableLocation(const location& _Placement);

Parámetros

_Placement
Una referencia a la ubicación en la que se consulta al programador actual.

Valor devuelto

Una indicación de si la ubicación especificada por el argumento _Placement está disponible en el programador actual.

Comentarios

Este método no dará lugar a la asociación del programador si el contexto de llamada aún no está asociado a un programador.

Tenga en cuenta que el valor devuelto es un muestreo instantáneo de si la ubicación especificada está disponible. En presencia de varios programadores, la administración de recursos dinámica puede agregar o quitar recursos de los programadores en cualquier momento. En caso de que esto suceda, la ubicación especificada puede cambiar la disponibilidad.

RegisterShutdownEvent

Hace que se envíe una señal al manipulador de eventos de Windows que se pasó en el parámetro _ShutdownEvent cuando el programador asociado con el contexto actual se apaga y se autodestruye. En el momento en que se señala el evento, se completa todo el trabajo que se había programado para el programador. Se pueden registrar varios eventos de apagado a través de este método.

static void __cdecl RegisterShutdownEvent(HANDLE _ShutdownEvent);

Parámetros

_ShutdownEvent
Un manipulador de un objeto de evento de Windows que recibirá una señal del runtime cuando el programador se apague y se autodestruya.

Comentarios

Si no hay ningún programador asociado al contexto de llamada, al llamar a este método se producirá una excepción scheduler_not_attached.

ScheduleTask

Programa una tarea ligera en el programador asociado al contexto de llamada. La tarea ligera se colocará en un grupo de programación determinado por el runtime. La versión que toma el parámetro _Placement hace que la tarea esté sesgada hacia la ejecución en la ubicación especificada.

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

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

Parámetros

_Proc
Un puntero a la función por ejecutar para realizar el cuerpo de la tarea ligera.

_Data
Puntero nulo para los datos que se pasarán como parámetro al cuerpo de la tarea.

_Placement
Referencia a una ubicación en la que se sesgará una tarea ligera para que se ejecute.

Comentarios

Este método hará que se cree el programador predeterminado del proceso y se adjunte al contexto de la llamada si no hay ningún programador asociado actualmente con el contexto de la llamada.

Consulte también

concurrency (espacio de nombres)
Scheduler (clase)
PolicyElementKey
Programador de tareas