Manuel de suivi dynamique Solaris

Sondes Mutex

Les sondes Mutex impliquent une exclusion mutuelle de sections critiques. Lorsqu'un thread tente d'acquérir une sonde mutex détenue par un autre thread à l'aide de mutex_lock(3C) ou de pthread_mutex_lock(3C), il détermine si le thread maître est exécuté sur une autre CPU. Si c'est le cas, le thread demandeur effectuera une brève rotation en attendant que la sonde mutex soit disponible. Si le propriétaire n'est pas exécuté sur une autre CPU, le thread demandeur se bloquera.

Les quatre sondes plockstat appartenant aux mutex sont répertoriées dans le Tableau 31–1. Pour chaque sonde, arg0 contient un pointeur vers la structure mutex_t ou pthread_mutex_t (il s'agit de types identiques) représentant la mutex.

Tableau 31–1 Sondes Mutex

mutex-acquire

Sonde d'événement de maintien se déclenchant immédiatement après l'acquisition d'une mutex. arg1 contient une valeur booléenne indiquant si l'acquisition a été récursive sur une mutex récursive. arg2 indique le nombre d'itérations engagées par le thread demandeur pour la rotation sur cette mutex. arg2 ne sera pas de zéro uniquement si la sonde mutex-spin s'est déclenchée à l'acquisition de cette mutex.

mutex-block

Sonde d'événement de contention se déclenchant avant qu'un thread ne bloque sur une mutex maintenue. mutex-block et mutex-spin peuvent se déclencher pour une seule acquisition de verrouillage.

mutex-spin

Sonde d'événement de contention se déclenchant avant qu'un thread ne commence sa rotation sur une mutex maintenue. mutex-block et mutex-spin peuvent se déclencher pour une seule acquisition de verrouillage.

mutex-release

Sonde d'événement de maintien se déclenchant immédiatement après la libération d'une mutex. arg1 contient une valeur booléenne indiquant si l'événement correspond à une libération récursive sur une mutex récursive.

mutex-error

Sonde d'événement d'erreur se déclenchant lorsqu'une erreur est rencontrée sur une opération de mutex. arg1 est la valeur errno de l'erreur rencontrée.