Compartir a través de


Estructura IUMSThreadProxy

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 llama para entrar en 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 planificador no se reentrará para fallos de página, suspensiones de subprocesos, llamadas a procedimientos asincrónicos del kernel (APCs), etc., para un subproceso de UMS.
IUMSThreadProxy::EnterHyperCriticalRegion Se le llama para entrar en 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 planificador no se volverá a invocar para llamadas de función bloqueantes, intentos de adquisición de bloqueo que se bloquean, fallos de página, suspensiones de subprocesos, llamadas a procedimientos asincrónicos del kernel (APCs), etc., para un subproceso de UMS.
IUMSThreadProxy::ExitCriticalRegion Llamado para salir de una región crítica.
IUMSThreadProxy::ExitHyperCriticalRegion Se invoca para abandonar una región hipercrítica.
IUMSThreadProxy::GetCriticalRegionType Devuelve el tipo de región crítica en la que se encuentra el proxy de hilo. 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 entrar en 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 planificador no se reentrará para fallos de página, suspensiones de hilos, llamadas a procedimientos asincrónicos del núcleo (APCs), etc., para un hilo 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 entrar en 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 planificador no se volverá a entrar para las llamadas de función bloqueantes, los intentos de adquisición de bloqueos que lo hagan, fallos de página, suspensiones de hilos, llamadas a procedimientos asincrónicos del kernel (APCs), etc., para un hilo 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 en una región de este tipo se bloquea en un cerrojo mantenido por algo que el planificador es responsable de programar, puede generar 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 invoca para abandonar 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 hilo. 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 hilo.

Consulte también

espacio de nombres de concurrencia
IUMSScheduler (estructura)