Linux |
CentOS 4.8 |
|
pthread_mutexattr_setkind_np(3thr) |
pthread_mutexattr_init, pthread_mutexattr_destroy, pthread_mutexattr_settype_np, pthread_mutexattr_gettype_np − attributs de création de mutex |
#include <pthread.h> int pthread_mutexattr_init(pthread_mutexattr_t *attr); int pthread_mutexattr_destroy(pthread_mutexattr_t *attr); int pthread_mutexattr_settype_np(pthread_mutexattr_t *attr, int type); int pthread_mutexattr_gettype_np(const pthread_mutexattr_t *attr, int *type); |
Les attributs de création de mutex peuvent être spécifiés lors de leur création en les passant en tant que second argument à pthread_mutex_init(3). NULL est équivalent à demander les attributs par défaut. pthread_mutexattr_init initialisae l’objet attributs_de_mutex attr et le remplit avec les valeurs par défaut. pthread_mutexattr_destroy détruit un objeet attributs_de_mutex qui ne doit plus jamais être utilisé. pthread_mutexattr_destroy ne fait rien dans l’implémentation LinuxThreads. LinuxThreads supporte seulement un seul attribut de mutex: le type de mutex qui peut être soit PTHREAD_MUTEX_FAST_NP pour des mutex rapides, soit PTHREAD_MUTEX_RECURSIVE_NP pour des mutex récursifs, soit PTHREAD_MUTEX_ERREURCHECK_NP pour des mutex avec vérification d’erreur. Comme le suffixe NP l’inique, ce sont des extensions non-portables aux standard POSIX et ne devraient donc jamais être employés dans un programme portable. Le type de mutex détermince ce qui se passe si un thread essaye de verrouiller un mutex déjà verrouillé par pthread_mutex_lock(3). Si le mutex est de type rapide; pthread_mutex_lock(3) suspend simplement le thread appelant. Si le mutex est de type "avec vérification d’erreur", pthread_mutex_lock(3) rend la main immédiatement avec le code d’erreur EDEADLK. Si le mutex est de type récursif, l’appel à pthread_mutex_lock(3) rend la main immédiatement avec un code de retour de succès. Le nombre de verrouillage par le thread possédant le mutex est enregistré dans le mutex. Le thread possédant le mutex doit appeler pthread_mutex_unlock(3) le même nombre de fois afin que le mutex passe à l’état déverrouillé. Le type de mutex par défaut est rapide, c’est-à -dire PTHREAD_MUTEX_FAST_NP. pthread_mutexattr_settype_np modifie l’attribut type_de_mutex dans attr à la valeur spécifiée par type. pthread_mutexattr_gettype_np récupère la valeur courrante de l’attrubut type_de_mutex dans attr et l’enregistre à l’emplacement pointé par type. |
pthread_mutexattr_init, pthread_mutexattr_destroy et pthread_mutexattr_gettype_np retournent toujours 0. pthread_mutexattr_settype_np retournent 0 en cas de succès et un code d’erreur non nul en cas d’erreur. |
En cas d’erreur, pthread_mutexattr_settype_np renvoie l’un des codes d’erreur suivant: |
EINVAL |
type n’est ni PTHREAD_MUTEX_FAST_NP ni |
PTHREAD_MUTEX_RECURSIVE_NP ni PTHREAD_MUTEX_ERREURCHECK_NP |
Xavier Leroy <Xavier.Leroy@inria.fr> |
Thierry Vignaud <tvignaud@mandrakesoft.com>, 2000 |
pthread_mutex_init(3), pthread_mutex_lock(3), pthread_mutex_unlock(3). |
pthread_mutexattr_setkind_np(3thr) |