Share via


IUMSThreadProxy (Estructura)

Una abstracción para un subproceso de ejecución. Si desea conceder subprocesos programables en modo usuario (UMS) al programador, establezca el valor para el elemento de directiva de programador SchedulerKind en UmsThreadDefault e implemente la interfaz IUMSScheduler. Los subprocesos UMS se admiten únicamente en sistemas operativos de 64 bits con Windows 7 o una versión posterior.

Sintaxis

struct IUMSThreadProxy : public IThreadProxy;

Miembros

Métodos públicos

Nombre Descripción
IUMSThreadProxy::EnterCriticalRegion Se le llama para especificar una región crítica. Si se encuentra dentro de una región crítica, el programador no observará las operaciones de bloqueo asincrónicas que se producen en la región. Esto significa que el programador no se volverá a especificar para errores de página, suspensiones de subprocesos, llamadas a procedimientos asincrónicos de kernel (APCs), etc., para un subproceso de UMS.
IUMSThreadProxy::EnterHyperCriticalRegion Se le llama para especificar una región hipercrítica. Cuando se encuentra dentro de una región hipercrítica, el programador no observará ninguna operación de bloqueo que se produzca en la región. Esto significa que el programador no se volverá a especificar para bloquear las llamadas de función, los intentos de adquisición de bloqueo que bloquean, errores de página, suspensiones de subprocesos, llamadas a procedimientos asincrónicos del kernel (APCs), etc., para un subproceso de UMS.
IUMSThreadProxy::ExitCriticalRegion Se le llama para salir de una región crítica.
IUMSThreadProxy::ExitHyperCriticalRegion Se le llama para salir de una región hipercrítica.
IUMSThreadProxy::GetCriticalRegionType Devuelve el tipo de región crítica en la que se encuentra el proxy de subproceso. Dado que las regiones hipercríticas son un superconjunto de regiones críticas, si el código se ha especificado en una región crítica y después en una hipercrítica, se devolverá InsideHyperCriticalRegion.

Jerarquía de herencia

IThreadProxy

IUMSThreadProxy

Requisitos

Encabezado: concrtrm.h

Espacio de nombres: simultaneidad

Método IUMSThreadProxy::EnterCriticalRegion

Se le llama para especificar una región crítica. Si se encuentra dentro de una región crítica, el programador no observará las operaciones de bloqueo asincrónicas que se producen en la región. Esto significa que el programador no se volverá a especificar para errores de página, suspensiones de subprocesos, llamadas a procedimientos asincrónicos de kernel (APCs), etc., para un subproceso de UMS.

virtual int EnterCriticalRegion() = 0;

Valor devuelto

Nueva profundidad de la región crítica. Las regiones críticas son reentrantes.

IUMSThreadProxy::EnterHyperCriticalRegion (Método)

Se le llama para especificar una región hipercrítica. Cuando se encuentra dentro de una región hipercrítica, el programador no observará ninguna operación de bloqueo que se produzca en la región. Esto significa que el programador no se volverá a especificar para bloquear las llamadas de función, los intentos de adquisición de bloqueo que bloquean, errores de página, suspensiones de subprocesos, llamadas a procedimientos asincrónicos del kernel (APCs), etc., para un subproceso de UMS.

virtual int EnterHyperCriticalRegion() = 0;

Valor devuelto

La nueva profundidad de la región hipercrítica. Las regiones hipercríticas son reentrantes.

Comentarios

El programador debe tener mucho cuidado sobre los métodos a los que llama y los bloqueos que adquiere en dichas regiones. Si el código de este tipo de región se bloquea en un bloqueo mantenido por algo que el programador es responsable de programar, es posible que se produzca un interbloqueo.

Método IUMSThreadProxy::ExitCriticalRegion

Se le llama para salir de una región crítica.

virtual int ExitCriticalRegion() = 0;

Valor devuelto

Nueva profundidad de la región crítica. Las regiones críticas son reentrantes.

IUMSThreadProxy::ExitHyperCriticalRegion (Método)

Se le llama para salir de una región hipercrítica.

virtual int ExitHyperCriticalRegion() = 0;

Valor devuelto

La nueva profundidad de la región hipercrítica. Las regiones hipercríticas son reentrantes.

Método IUMSThreadProxy::GetCriticalRegionType

Devuelve el tipo de región crítica en la que se encuentra el proxy de subproceso. Dado que las regiones hipercríticas son un superconjunto de regiones críticas, si el código se ha especificado en una región crítica y después en una hipercrítica, se devolverá InsideHyperCriticalRegion.

virtual CriticalRegionType GetCriticalRegionType() const = 0;

Valor devuelto

El tipo de región crítica en la que se encuentra el proxy de subproceso.

Consulte también

concurrency (espacio de nombres)
IUMSScheduler (estructura)