Guía de seguimiento dinámico de Solaris

Sondeos de bloqueo lectores/escritor

Los bloqueos de lector/escritor hacen cumplir la política de permitir varios lectores o un único escritor, pero no que ambos se encuentren en una sección crítica. Estos bloqueos suelen utilizarse con estructuras que se buscan con más frecuencia que con la que se modifican, y con estructuras de las que hay tiempo sustancial en la sección crítica. Si los tiempos de la sección crítica son breves, los bloqueos lectores/escritor serializarán de forma implícita sobre la memoria utilizada para implementar el bloqueo, no proporcionándoles ventajas frente a otros bloqueos adaptativos. Consulte rwlock(9F) para obtener más detalles acerca de los bloqueos de lector/escritor.

Los sondeos relacionados con los bloqueos de lector/escritor se encuentran en la Tabla 18–4. Para cada sondeo, arg0 contiene un puntero a la estructura krwlock_t que representa el bloqueo adaptativo.

Tabla 18–4 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. arg1 contiene la constante RW_READER si el bloqueo se adquirió como lector, y RW_WRITER si el bloqueo se adquirió como escritor.

rw-block

Sondeo de evento de contención que se activa después de que un subproceso que se ha bloqueado en un bloqueo lectores/escritor se haya reactivado y haya adquirido el bloqueo. arg1 contiene la cantidad de tiempo (en nanosegundos) durante la que el subproceso actual tiene que estar inactivo para adquirir el bloqueo. arg2 contendrá la constante RW_READER si se adquirió el bloqueo como lector, y RW_WRITER si se adquirió como escritor. arg3 y arg4 contienen más información de la razón del bloqueo. arg3 no es cero sólo si el bloqueo se retuvo como escritor al realizar el bloqueo del subproceso actual. arg4 contiene el número de lectores al realizar el bloqueo del subproceso actual. Si están habilitados tanto el sondeo rw-block como el sondeo rw-acquire, rw-block se activa antes que rw-acquire.

rw-upgrade

Sondeo de evento de retención que se activa después de que un subproceso haya actualizado satisfactoriamente un bloqueo lectores/escritor de un lector a un escritor. Las actualizaciones no presentan un evento de contención asociado, dado que sólo son posibles a través de una interfaz de no bloqueo, rw_tryupgrade(9F).

rw-downgrade

Sondeo de evento de retención que se activa después de que un subproceso haya degradado su nivel de propiedad de un bloqueo lectores/escritor de escritor a lector. La degradación no tiene evento de contención asociado, ya que siempre se realizan correctamente sin contención. 

rw-release

Sondeo de evento de retención que se activa inmediatamente después de liberar un bloqueo lectores/escritor. arg1 contendrá la constante RW_READER si el bloqueo que se ha liberado se retenía como lector, y RW_WRITER si el bloqueo liberado se retenía como escritor. Debido a las actualizaciones y las degradaciones, puede que el bloqueo no se haya liberado del mismo modo en el que se adquirió.