int pthread_attr_init(pthread_attr_t *attr);
int pthread_attr_destroy(pthread_attr_t *attr);
int pthread_attr_setdetachstate(pthread_attr_t *attr, int detachstate);
int pthread_attr_getdetachstate(const pthread_attr_t *attr, int *detachstate);
int pthread_attr_setschedpolicy(pthread_attr_t *attr, int policy);
int pthread_attr_getschedpolicy(const pthread_attr_t *attr, int *policy);
int pthread_attr_setschedparam(pthread_attr_t *attr, const struct sched_param *param);
int pthread_attr_getschedparam(const pthread_attr_t *attr, struct sched_param *param);
int pthread_attr_setinheritsched(pthread_attr_t *attr, int inherit);
int pthread_attr_getinheritsched(const pthread_attr_t *attr, int *inherit);
int pthread_attr_setscope(pthread_attr_t *attr, int scope);
int pthread_attr_getscope(const pthread_attr_t *attr, int *scope);
pthread_attr_init() initialise la structure d'attributs de thread attr et la remplit avec les valeurs par défaut pour tous les attributs (Les valeurs par défauts de chaque attribut sont données plus bas).
Chaque attribut attrname (voir plus bas la liste de tous les attributs) peut être individuellement modifié en utilisant la fonction pthread_attr_set(attrname) et récupéré à l'aide de la fonction pthread_attr_get(attrname).
pthread_attr_destroy() détruit un objet attribut_de_thread, qui ne doit plus jamais être réutilisé jusqu'à ce qu'il soit réinitialisé. pthread_attr_destroy() ne fait rien dans l'implémentation LinuxThreads.
Les structures d'attributs ne sont consultées que lors de la création d'un nouveau thread. La même structure d'attributs peut être réutilisée pour créer plusieurs threads. Modifier une structure d'attributs après un appel à pthread_create(3) ne modifie pas les attributs du thread précédemment créé.
Les attributs de thread supportés sont les suivants :
Valeur par défaut : PTHREAD_CREATE_JOINABLE.
Dans l'état joignable, un autre thread peut se synchroniser sur la fin du thread et récupérer son code de terminaison en utilisant pthread_join(3), mais certaines ressources du thread resteront allouées après sa fin et ne seront libérées que lorsqu'un autre thread appelera pthread_join(3) sur ce thread.
Dans l'état détaché, les ressources du thread sont immédiatement libérées quand il se termine, mais pthread_join(3) ne peut être utilisée pour se synchroniser sur la fin du thread.
Un thread créé dans l'état joignable peut ensuite être mis dans l'état détaché en utilisant pthread_detach(3).
Valeur par défaut : SCHED_OTHER.
Les politiques d'ordonnancement temps-réel SCHED_RR et SCHED_FIFO ne sont disponibles que pour les processus possédant les privilèges du super-utilisateur.
La politique d'ordonnancement d'un thread peut être modifiée après sa création avec pthread_setschedparam(3).
Valeur par défaut : priorité à 0.
Cet attribut est sans significtion si la politique d'ordonnancement est SCHED_OTHER ; il n'a d'importance que pour les ordonnancements temps-réel SCHED_RR et SCHED_FIFO.
La priorité d'ordonnancement d'un thread peut être modifiée après sa création avec pthread_setschedparam(3).
Valeur par défaut : PTHREAD_EXPLICIT_SCHED.
Valeur par défaut : PTHREAD_SCOPE_SYSTEM.
La fonction pthread_attr_setschedparam() renvoie le code d'erreur suivant en cas de problème :
La fonction pthread_attr_setschedpolicy() renvoie l'un des codes d'erreur suivants en cas de problème :
La fonction pthread_attr_setinheritsched() renvoie le code d'erreur suivant en cas de problème :
La fonction pthread_attr_setscope() renvoie l'un des codes d'erreur suivants en cas de problème :
Ce document est une traduction réalisée par Thierry Vignaud <tvignaud AT mandriva DOT com> en 2000 et révisée le 25 avril 2008.
L'équipe de traduction a fait le maximum pour réaliser une adaptation française de qualité. La version anglaise la plus à jour de ce document est toujours consultable via la commande : « LANG=C man 3 pthread_attr_init ». N'hésitez pas à signaler à l'auteur ou au traducteur, selon le cas, toute erreur dans cette page de manuel.
Dernière mise à jour : 26 mai 2008