IExecutionContext (Estructura)
Una interfaz a un contexto de ejecución que se puede ejecutar en un procesador virtual determinado y que puede cambiar de contexto de forma cooperativa.
Sintaxis
struct IExecutionContext;
Miembros
Métodos públicos
Nombre | Descripción |
---|---|
IExecutionContext::Dispatch | Método al que se llama cuando un proxy de subproceso comienza a ejecutar un contexto de ejecución determinado. Debe ser la rutina de trabajo principal del programador. |
IExecutionContext::GetId | Devuelve un identificador único para el contexto de ejecución. |
IExecutionContext::GetProxy | Devuelve una interfaz al proxy de subproceso que ejecuta este contexto. |
IExecutionContext::GetScheduler | Devuelve una interfaz al programador al que pertenece este contexto de ejecución. |
IExecutionContext::SetProxy | Asocia un proxy de subproceso a este contexto de ejecución. El proxy de subproceso asociado invoca este método justo antes de empezar a ejecutar el método Dispatch del contexto. |
Comentarios
Si va a implementar un programador personalizado que interactúa con el Resource Manager del runtime de simultaneidad, deberá implementar la interfaz IExecutionContext
. Los subprocesos creados por el Resource Manager realizan el trabajo en nombre del programador ejecutando el método IExecutionContext::Dispatch
.
Jerarquía de herencia
IExecutionContext
Requisitos
Encabezado: concrtrm.h
Espacio de nombres: simultaneidad
IExecutionContext::D ispatch (Método)
Método al que se llama cuando un proxy de subproceso comienza a ejecutar un contexto de ejecución determinado. Debe ser la rutina de trabajo principal del programador.
virtual void Dispatch(_Inout_ DispatchState* pDispatchState) = 0;
Parámetros
pDispatchState
Puntero al estado en el que se envía este contexto de ejecución. Para obtener más información sobre el estado de envío, vea DispatchState.
IExecutionContext::GetId (Método)
Devuelve un identificador único para el contexto de ejecución.
virtual unsigned int GetId() const = 0;
Valor devuelto
Identificador entero único.
Comentarios
Use el método GetExecutionContextId
para obtener un identificador único para el objeto que implementa la interfaz IExecutionContext
antes de poder usar la interfaz como un parámetro en métodos que proporciona el Resource Manager. Se espera que devuelva el mismo identificador al invocar la función GetId
.
Un identificador obtenido de un origen diferente podría dar lugar a un comportamiento sin definir.
IExecutionContext::GetProxy (Método)
Devuelve una interfaz al proxy de subproceso que ejecuta este contexto.
virtual IThreadProxy* GetProxy() = 0;
Valor devuelto
Interfaz IThreadProxy
. Si el proxy de subproceso del contexto de ejecución no se ha inicializado con una llamada a SetProxy
, la función debe devolver NULL
.
Comentarios
El Resource Manager invocará el método SetProxy
en un contexto de ejecución, con una interfaz IThreadProxy
como parámetro, antes de escribir el método Dispatch
en el contexto. Se espera que almacene este argumento y lo devuelva en llamadas a GetProxy()
.
IExecutionContext::GetScheduler (Método)
Devuelve una interfaz al programador al que pertenece este contexto de ejecución.
virtual IScheduler* GetScheduler() = 0;
Valor devuelto
Interfaz IScheduler
.
Comentarios
Debe inicializar el contexto de ejecución con una interfaz válida IScheduler
antes de usarlo como parámetro para los métodos proporcionados por el Resource Manager.
IExecutionContext::SetProxy (Método)
Asocia un proxy de subproceso a este contexto de ejecución. El proxy de subproceso asociado invoca este método justo antes de empezar a ejecutar el método Dispatch
del contexto.
virtual void SetProxy(_Inout_ IThreadProxy* pThreadProxy) = 0;
Parámetros
pThreadProxy
Interfaz al proxy de subproceso que está a punto de escribir el método Dispatch
en este contexto de ejecución.
Comentarios
Se espera que guarde el parámetro pThreadProxy
y lo devuelva en una llamada al método GetProxy
. El Resource Manager garantiza que el proxy de subproceso asociado al contexto de ejecución no cambiará mientras el proxy del subproceso ejecuta el método Dispatch
.
Consulte también
concurrency (espacio de nombres)
IScheduler (estructura)
IThreadProxy (estructura)