Compartir a través de


clase critical_section

Un mutex no reentrante que es explícitamente consciente del tiempo de ejecución de concurrencia.

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 frente a excepciones para un objeto critical_section.

Constructores públicos

Nombre Descripción
sección_crítica Construye una sección crítica nueva.
Destructor de ~critical_section Destruye una sección crítica.

Métodos públicos

Nombre Descripción
lock Obtiene 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 obstruir.
try_lock_for Intenta adquirir el bloqueo sin bloquear durante un número específico de milisegundos.
desbloquear 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

sección crítica

Construye una sección crítica nueva.

critical_section();

~sección_crítica

Destruye una sección crítica.

~critical_section();

Comentarios

Se espera que el bloqueo ya no se mantenga cuando se ejecute el destructor. Permitir que se destruya la sección crítica con el bloqueo todavía retenido genera un comportamiento no definido.

cerradura

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.

manejador nativo

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 está asociado con un identificador nativo propio 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 frente a 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, esta llamada se bloqueará.

explicit _CRTIMP scoped_lock(critical_section& _Critical_section);

Parámetros

_Sección_crítica
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 obstruir.

bool try_lock();

Valor devuelto

Si se adquirió el bloqueo, el valor es true; de lo contrario, false.

intentando_bloqueo_por

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

espacio de nombres de concurrencia
reader_writer_lock Clase