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
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.