Compartir a través de


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();

Consulte también

concurrency (espacio de nombres)
reader_writer_lock (clase)