Guía de seguimiento dinámico de Solaris

Sondeos mutex

Los mutex fuerzan la exclusión mutua en secciones críticas. Cuando un sondeo intenta adquirir un mutex que se encuentra en otro subproceso mediante mutex_lock(3C) o pthread_mutex_lock(3C), determinará si el subproceso que lo posee se encuentra en ejecución en una CPU distinta. Si ese fuera el caso, el subproceso que realiza la adquisición gira durante un breve espacio de tiempo esperando a que el mutex esté disponible. Si el propietario no se encuentra en ejecución en otra CPU, el subproceso que realiza la adquisición se bloqueará.

Los cuatro sondeos plockstat relacionados con los mutex se enumeran en la Tabla 31–1. Para cada sondeo, arg0 contiene un puntero a la estructura mutex_t o pthread_mutex_t (estos dos tipos son idénticos) que representan al mutex.

Tabla 31–1 Sondeos mutex

mutex-acquire

Sonde de evento de retención que se activa inmediatamente después de la adquisición de un mutex. arg1 contiene un valor booleano que indica si la adquisición se realizó de forma recursiva en un mutex recursivo. arg2 indica el número de iteraciones que pasó el subproceso que realiza la adquisición girando en este mutex. arg2 será un valor distinto de cero sólo si se activó el sondeo mutex-spin en esta adquisición mutex.

mutex-block

Sondeo de evento de contención que se activa antes de que un subproceso se bloquee en un mutex retenido. Tanto mutex-block como mutex-spin podrían activarse para una única adquisición de bloqueo.

mutex-spin

Sondeo de evento de contención que se activa antes de que un subproceso empiece a girar en un mutex retenido. Tanto mutex-block como mutex-spin podrían activarse para una única adquisición de bloqueo.

mutex-release

Evento de retención que se activa inmediatamente después de la liberación de un mutex. arg1 contiene un valor booleano que indica si el evento corresponde a una liberación recursiva en un mutex recursivo.

mutex-error

Sondeo de evento de error que se activa cuando se detecta un error en una operación mutex. arg1 es el valor errno del error detectado.