pthread_spin_init(3) Library Functions Manual pthread_spin_init(3) NOM pthread_attr_init, pthread_attr_destroy -- Initialiser ou detruire un verrou tournant BIBLIOTHEQUE Bibliotheque de threads POSIX (libpthread, -lpthread) SYNOPSIS #include int pthread_spin_init(pthread_spinlock_t *lock, int pshared); int pthread_spin_destroy(pthread_spinlock_t *lock); Exigences de macros de test de fonctionnalites pour la glibc (consulter feature_test_macros(7)) : pthread_spin_init(), pthread_spin_destroy() : _POSIX_C_SOURCE >= 200112L DESCRIPTION Remarque generale : La plupart des programmes devraient utiliser des mutex a la place de verrous tournants. Les verrous tournants sont essentiellement utiles employes de maniere conjointe avec des politiques d'ordonnancement en temps reel. Voir NOTES. La fonction pthread_spin_init() alloue toutes les ressources necessaires pour utiliser le verrou tournant auquel se refere lock et initialise le verrou pour qu'il soit en etat deverrouille. L'argument pshared doit avoir une des valeurs suivantes : PTHREAD_PROCESS_PRIVATE Le verrou tournant est destine a etre utilise uniquement par des threads du meme processus que celui du thread qui appelle pthread_spin_init(). (Essayer de partager le verrou entre processus resulte en un comportement indefini.) PTHREAD_PROCESS_SHARED Le verrou tournant peut etre opere par n'importe quel thread de n'importe quel processus qui a acces a la memoire contenant le verrou (c'est-a-dire, le verrou peut etre dans un objet memoire partage par de multiples processus). Appeler pthread_spin_init() sur un verrou tournant qui a deja ete initialise resulte en un comportement indefini. La fonction pthread_spin_destroy() detruit un verrou tournant precedemment initialise, liberant toutes les ressources qui lui ont ete attribuees. Detruire un verrou tournant qui n'a pas ete precedemment initialise ou un verrou alors qu'un autre thread le possede resulte en un comportement indefini. Une fois que le verrou tournant a ete detruit, realiser une operation sur le verrou autre que de l'initialiser a nouveau avec pthread_spin_init() resulte en un comportement indefini. Le resultat de la realisation d'operations telles que pthread_spin_lock(3), pthread_spin_unlock(3) et pthread_spin_destroy() sur des copies de l'objet auquel se refere lock est indefini. VALEUR RENVOYEE En cas de reussite, ces fonctions renvoient 0. En cas d'erreur, elles renvoient un numero d'erreur. Si pthread_spin_init() echoue, le verrou n'est pas initialise. ERREURS pthread_spin_init() peut echouer avec les erreurs suivantes : EAGAIN Le systeme n'a pas assez de ressources pour initialiser un nouveau verrou tournant. ENOMEM Memoire insuffisante pour initialiser le verrou tournant. STANDARDS POSIX.1-2008. HISTORIQUE glibc 2.2. POSIX.1-2001. La prise en charge de verrous tournants partages par les processus est une option POSIX. Cette option est prise en charge dans l'implementation de la glibc. NOTES Les verrous tournants doivent etre employes de maniere conjointe avec des politiques d'ordonnancement en temps reel (SCHED_FIFO ou eventuellement SCHED_RR). L'utilisation de verrous tournants avec des politiques d'ordonnancement non deterministes tel que SCHED_OTHER est le signe probablement d'une erreur de conception. Le probleme est que si un thread operant avec une politique de ce type est ordonnance hors processeur tandis qu'il possede un verrou tournant, alors les autres threads vont perdre leur temps en attente active du verrou jusqu'a ce que le proprietaire du verrou soit a nouveau reordonnance et libere le verrou. Si des threads creent une situation d'interblocage lors de l'utilisation de verrous tournants, ces threads se mettront en attente active pour toujours en consommant du temps de processeur. Les verrous tournants de l'espace utilisateur ne sont pas applicables comme une solution generale de verrouillage. Ils sont, par definition, sujets a des inversions de priorite et a des durees d'attente active illimitees. Un developpeur utilisant des verrous tournants doit etre particulierement prudent non seulement sur le code, mais aussi en matiere de configuration du systeme, de placement des threads et d'assignation de priorite. VOIR AUSSI pthread_mutex_init(3), pthread_mutex_lock(3), pthread_spin_lock(3), pthread_spin_unlock(3), pthreads(7) TRADUCTION La traduction francaise de cette page de manuel a ete creee par Christophe Blaess , Stephan Rafin , Thierry Vignaud , Francois Micaux, Alain Portal , Jean-Philippe Guerard , Jean-Luc Coulon (f5ibh) , Julien Cristau , Thomas Huriaux , Nicolas Francois , Florentin Duneau , Simon Paillard , Denis Barbier , David Prevot , Frederic Hantrais et Jean- Pierre Giraud Cette traduction est une documentation libre ; veuillez vous reporter a la GNU General Public License version 3 concernant les conditions de copie et de distribution. Il n'y a aucune RESPONSABILITE LEGALE. Si vous decouvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message a . Pages du manuel de Linux 6.06 31 octobre 2023 pthread_spin_init(3)