critical_section (clase)
Una exclusión mutua no reentrante que es explícitamente consciente del runtime de simultaneidad.
Sintaxis
class critical_section;
Miembros
Definiciones de tipos públicas
Nombre | Descripción |
---|---|
native_handle_type |
Referencia a un objeto critical_section . |
Clases públicas
Nombre | Descripción |
---|---|
clase critical_section::scoped_lock | Contenedor RAII seguro ante excepciones para un objeto critical_section . |
Constructores públicos
Nombre | Descripción |
---|---|
critical_section | Construye una sección crítica nueva. |
~critical_section (Destructor) | Destruye una sección crítica. |
Métodos públicos
Nombre | Descripción |
---|---|
lock | Adquiere esta sección crítica. |
native_handle | Devuelve un identificador nativo específico de la plataforma, si existe. |
try_lock | Intenta adquirir el bloqueo sin bloquear. |
try_lock_for | Intenta adquirir el bloqueo sin bloquear durante un número específico de milisegundos. |
unlock | Desbloquea la sección crítica. |
Comentarios
Para más información, consulte Estructuras de datos de sincronización.
Jerarquía de herencia
critical_section
Requisitos
Encabezado: concrt.h
Espacio de nombres: simultaneidad
critical_section
Construye una sección crítica nueva.
critical_section();
~critical_section
Destruye una sección crítica.
~critical_section();
Comentarios
Se espera que ya no se retenga el bloqueo cuando se ejecute el destructor. Permitir que se destruya la sección crítica con el bloqueo retenido genera un comportamiento no definido.
lock
Adquiere esta sección crítica.
void lock();
Comentarios
Por lo general, suele ser más seguro utilizar la construcción scoped_lock para adquirir y liberar un objeto critical_section
de manera segura ante excepciones.
Si el contexto de llamada ya retiene el bloqueo, se generará una excepción improper_lock.
native_handle
Devuelve un identificador nativo específico de la plataforma, si existe.
native_handle_type native_handle();
Valor devuelto
Referencia a la sección crítica.
Comentarios
Un objeto critical_section
no se asocia un identificador nativo específico de la plataforma para el sistema operativo Windows. El método simplemente devuelve una referencia al objeto mismo.
clase critical_section::scoped_lock
Contenedor RAII seguro ante excepciones para un objeto critical_section
.
class scoped_lock;
scoped_lock::scoped_lock
Construye un objeto scoped_lock
y adquiere el objeto critical_section
pasado en el parámetro _Critical_section
. Si otro subproceso retiene la sección crítica, se bloqueará esta llamada.
explicit _CRTIMP scoped_lock(critical_section& _Critical_section);
Parámetros
_Critical_section
La sección crítica que se va a bloquear.
scoped_lock::~scoped_lock
Destruye un objeto scoped_lock
y libera la sección crítica proporcionada en su constructor.
~scoped_lock();
try_lock
Intenta adquirir el bloqueo sin bloquear.
bool try_lock();
Valor devuelto
Si se adquirió el bloqueo, el valor es true
; de lo contrario, false
.
try_lock_for
Intenta adquirir el bloqueo sin bloquear durante un número específico de milisegundos.
bool try_lock_for(unsigned int _Timeout);
Parámetros
_Timeout
El número de milisegundos que se va a esperar antes de que se agote el tiempo de espera.
Valor devuelto
Si se adquirió el bloqueo, el valor es true
; de lo contrario, false
.
desbloquear
Desbloquea la sección crítica.
void unlock();