Los bloqueos lector/escritor permiten varios lectores o un único escritor, pero no ambos, en una sección crítica simultáneamente. Estos bloqueos suelen utilizarse con estructuras que se buscan con más frecuencia que con la que se modifican, o cuando los subprocesos emplean gran cantidad de tiempo en una sección crítica. Los usuarios interactúan con los bloqueos lector/escritor mediante las interfaces Solaris rwlock(3C) o POSIX pthread_rwlock_init(3C).
Los sondeos relacionados con los bloqueos de lector/escritor se incluyen en la Tabla 31–2. Para cada sondeo, arg0 contiene un puntero a la estructura rwlock_t o pthread_rwlock_t(estos dos tipos son idénticos) que representa el bloqueo adaptativo. arg1 contiene un valor booleano que indica si la operación se realizó como escritor.
Tabla 31–2 Sondeos de bloqueo lectores/escritor
rw-acquire |
Sondeo de evento de retención que se activa inmediatamente después de adquirir un bloqueo lectores/escritor. |
rw-block |
Sondeo de evento de contención que se activa antes de que un subproceso se bloquee mientras está intentando adquirir un bloqueo. Si está habilitado, el sondeo rw-acquire o el sondeo rw-error se activará después de rw-block. |
rw-release |
Sondeo de evento de retención que se activa inmediatamente después de liberar un bloqueo lector/escritor. |
rw-error |
Sondeo de evento de errores que se activa cuando se detecta un error durante una operación de bloqueo lector/escritor. arg1 es el valor errno del error detectado. |