Compartir a través de


Clase CurrentScheduler

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
Creación Crea un nuevo programador cuyo comportamiento se describe mediante el parámetro _Policy y lo asocia al contexto de llamada. El planificador recién creado se convertirá en el planificador actual para el contexto de llamada.
CreateScheduleGroup Sobrecargado Crea un nuevo grupo de programación dentro del programador asociado con el 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 planificador administra el contexto de llamada que estaba asociado previamente al contexto mediante el método CurrentScheduler::Create o Scheduler::Attach.
Get Devuelve un puntero al planificador asociado al contexto de llamada, también denominado planificador actual.
GetNumberOfVirtualProcessors (ObtenerNúmeroDeProcesadoresVirtuales) Devuelve el número actual de procesadores virtuales para el programador asociado al contexto de llamada.
GetPolicy Devuelve una copia de la política con la que fue creado el planificador actual.
Id Devuelve un identificador único para el programador actual.
IsAvailableLocation Determina si una ubicación determinada está disponible en el programador actual.
RegistrarEventoDeApagado Provoca que el manejador de eventos de Windows, pasado en el parámetro _ShutdownEvent, reciba una señal cuando el programador asociado con el contexto actual se apague y se destruya a sí mismo. 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 Sobrecargado 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 tiempo de ejecución. 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 durante dicha llamada se cree el programador predeterminado del proceso.

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

_Política
La política del planificador que describe el comportamiento del planificador recién creado.

Comentarios

La asociación del planificador al contexto de llamada implícitamente atribuye un recuento de referencias al planificador.

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.

CrearGrupoDeHorarios

Crea un nuevo grupo de programación dentro del programador asociado con el 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

_Colocación
Una referencia a una ubicación donde se dará prioridad a la ejecución de las tareas dentro del grupo de tareas programadas.

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 Liberar en un grupo de programación cuando haya terminado de programar el trabajo en é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.

Desacoplar

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 planificador administra el contexto de llamada que estaba 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 planificador.

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 planificador asociado al contexto de llamada, también denominado planificador actual.

static Scheduler* __cdecl Get();

Valor devuelto

Un puntero al planificador asociado con el contexto de llamada (el planificador 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 resultará en la vinculación con un planificador si el contexto llamante aún no está asociado a un planificador.

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

GetPolicy

Devuelve una copia de la política con la que fue creado el planificador actual.

static SchedulerPolicy __cdecl GetPolicy();

Valor devuelto

Una copia de la política 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.

Id

Devuelve un identificador único para el programador actual.

static unsigned int __cdecl Id();

Valor devuelto

Si un planificador está asociado al contexto de llamada, se asigna un identificador único a dicho planificador; de lo contrario, el valor -1.

Comentarios

Este método no resultará en la vinculación con un planificador si el contexto llamante aún no está asociado a un planificador.

UbicaciónDisponible

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

static bool __cdecl IsAvailableLocation(const location& _Placement);

Parámetros

_Colocación
Una referencia a la ubicación para consultar al planificador actual sobre ello.

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 resultará en la vinculación con un planificador si el contexto llamante aún no está asociado a un planificador.

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

RegisterShutdownEvent

Provoca que el manejador de eventos de Windows, pasado en el parámetro _ShutdownEvent, reciba una señal cuando el programador asociado con el contexto actual se apague y se destruya a sí mismo. 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 manejador de un objeto de evento de Windows que recibirá una señal del entorno de ejecución cuando el planificador asociado con el contexto actual 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 tiempo de ejecución. 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 para ejecutar al 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.

_Colocación
Referencia a una ubicación hacia la cual se inclinará la ejecución de una tarea liviana.

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

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