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 |
---|---|
Creación | 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.
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
.
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.
Id
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