Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Un bloqueo lector-escritor basado en cola con preferencia de escritor y con giro solo local. El bloqueo proporciona acceso primero en entrar, primero en salir (FIFO) a los escritores y priva a los lectores bajo una carga continua de escritores.
Sintaxis
class reader_writer_lock;
Miembros
Clases públicas
| Nombre | Descripción |
|---|---|
| Clase Reader_Writer_Lock::Scoped_Lock | Un contenedor RAII seguro de excepciones que se puede usar para adquirir objetos de bloqueo reader_writer_lock como escritor. |
| Clase reader_writer_lock::scoped_lock_read | Un contenedor RAII seguro de excepciones que se puede usar para adquirir objetos de bloqueo reader_writer_lock como lector. |
Constructores públicos
| Nombre | Descripción |
|---|---|
| reader_writer_lock | Construye un nuevo objeto reader_writer_lock. |
| ~reader_writer_lock Destructor | Destruye el objeto reader_writer_lock. |
Métodos públicos
| Nombre | Descripción |
|---|---|
| lock | Adquiere el bloqueo de lectura-escritura en modo escritor. |
| lock_read | Adquiere el bloqueo lector-escritor como lector. Si hay escritores, los lectores activos tienen que esperar hasta que terminen. El lector simplemente registra un interés en el cerrojo y espera a que los escritores lo liberen. |
| try_lock | Intenta adquirir el bloqueo lector-escritor como escritor sin bloquear. |
| try_lock_read | Intenta adquirir el bloqueo lector-escritor como lector sin bloquear. |
| desbloquear | Desbloquea el bloqueo lector-escritor en función de quién lo bloqueó, lector o escritor. |
Comentarios
Para más información, consulte Estructuras de datos de sincronización.
Jerarquía de herencia
reader_writer_lock
Requisitos
Encabezado: concrt.h
Espacio de nombres: simultaneidad
cerradura
Adquiere el bloqueo lector-escritor como escritor.
void lock();
Comentarios
Por lo general, suele ser más seguro utilizar la construcción scoped_lock para adquirir y liberar un objeto reader_writer_lock como escritor de manera segura frente a excepciones.
Después de que un escritor intente adquirir el bloqueo, cualquier lector futuro se bloqueará hasta que los escritores hayan adquirido y liberado correctamente el bloqueo. Este bloqueo está sesgado hacia los escritores y puede privar a los lectores bajo una carga continua de escritores.
Los escritores están enlazados para que un escritor que salga del bloqueo libere al siguiente escritor en la fila.
Si el contexto de llamada ya retiene el bloqueo, se generará una excepción improper_lock.
lock_read
Adquiere el bloqueo lector-escritor como lector. Si hay escritores, los lectores activos tienen que esperar hasta que terminen. El lector simplemente registra un interés en el cerrojo y espera a que los escritores lo liberen.
void lock_read();
Comentarios
Por lo general, suele ser más seguro utilizar la construcción scoped_lock_read para adquirir y liberar un objeto reader_writer_lock como lector de forma segura ante excepciones.
Si hay escritores en espera del candado, el lector esperará hasta que todos los escritores en la cola hayan adquirido y liberado el candado. Este bloqueo está sesgado hacia los escritores y puede privar a los lectores bajo una carga continua de escritores.
bloqueo lector-escritor
Construye un nuevo objeto reader_writer_lock.
reader_writer_lock();
~reader_writer_lock
Destruye el objeto reader_writer_lock.
~reader_writer_lock();
Comentarios
Se espera que el bloqueo ya no se mantenga cuando se ejecute el destructor. Permitir la destrucción del bloqueo lector-escritor mientras el bloqueo todavía está mantenido genera un comportamiento indefinido.
clase reader_writer_lock::scoped_lock
Un contenedor RAII seguro de excepciones que se puede usar para adquirir objetos de bloqueo reader_writer_lock como escritor.
class scoped_lock;
scoped_lock::scoped_lock
Construye un objeto scoped_lock y adquiere el objeto reader_writer_lock pasado en el parámetro _Reader_writer_lock como escritor. Si otro hilo mantiene el bloqueo, esta llamada se bloqueará.
explicit _CRTIMP scoped_lock(reader_writer_lock& _Reader_writer_lock);
Parámetros
_Reader_writer_lock
El objeto reader_writer_lock que se va a adquirir como escritor.
scoped_lock::~scoped_lock
Destruye un objeto reader_writer_lock y libera el bloqueo proporcionado en su constructor.
~scoped_lock();
Clase "reader_writer_lock::scoped_lock_read"
Un contenedor RAII seguro de excepciones que se puede usar para adquirir objetos de bloqueo reader_writer_lock como lector.
class scoped_lock_read;
scoped_lock_read::scoped_lock_read
Construye un objeto scoped_lock_read y adquiere el objeto reader_writer_lock pasado en el parámetro _Reader_writer_lock como un lector. Si otro subproceso mantiene el bloqueo en modo de escritura o hay escritores pendientes, esta llamada se bloqueará.
explicit _CRTIMP scoped_lock_read(reader_writer_lock& _Reader_writer_lock);
Parámetros
_Reader_writer_lock
El objeto reader_writer_lock que se debe adquirir como lector.
reader_writer_lock::scoped_lock_read::~scoped_lock_read Destructor
Destruye un objeto scoped_lock_read y libera el bloqueo proporcionado en su constructor.
~scoped_lock_read();
try_lock
Intenta adquirir el bloqueo lector-escritor como escritor sin bloquear.
Sintaxis
bool try_lock();
Valor devuelto
Si se adquirió el bloqueo, el valor es true; de lo contrario, false.
try_lock_read
Intenta adquirir el bloqueo lector-escritor como lector sin bloquear.
bool try_lock_read();
Valor devuelto
Si se adquirió el bloqueo, el valor es true; de lo contrario, false.
desbloquear
Desbloquea el bloqueo lector-escritor en función de quién lo bloqueó, lector o escritor.
void unlock();
Comentarios
Si hay escritores esperando por el bloqueo, la liberación del mismo siempre se otorgará al siguiente escritor en el orden FIFO. Este bloqueo está sesgado hacia los escritores y puede privar a los lectores bajo una carga continua de escritores.