Provided by: manpages-fr-dev_4.23.1-1_all bug

NOM

       pthread_attr_init, pthread_attr_destroy — Initialiser ou détruire un verrou tournant

BIBLIOTHÈQUE

       Bibliothèque de threads POSIX (libpthread, -lpthread)

SYNOPSIS

       #include <pthread.h>

       int pthread_spin_init(pthread_spinlock_t *lock, int pshared);
       int pthread_spin_destroy(pthread_spinlock_t *lock);

   Exigences    de    macros    de   test   de   fonctionnalités   pour   la   glibc   (consulter
   feature_test_macros(7)) :

       pthread_spin_init(), pthread_spin_destroy() :
           _POSIX_C_SOURCE >= 200112L

DESCRIPTION

       Remarque générale : La plupart des programmes devraient utiliser des mutex à la  place  de
       verrous  tournants.  Les verrous tournants sont essentiellement utiles employés de manière
       conjointe avec des politiques d'ordonnancement en temps réel. Voir NOTES.

       La fonction pthread_spin_init() alloue toutes les ressources nécessaires pour utiliser  le
       verrou  tournant  auquel  se  réfère  lock et initialise le verrou pour qu'il soit en état
       déverrouillé. L'argument pshared doit avoir une des valeurs suivantes :

       PTHREAD_PROCESS_PRIVATE
              Le verrou tournant est destiné à être utilisé uniquement par des  threads  du  même
              processus que celui du thread qui appelle pthread_spin_init(). (Essayer de partager
              le verrou entre processus résulte en un comportement indéfini.)

       PTHREAD_PROCESS_SHARED
              Le verrou tournant peut être opéré par n'importe  quel  thread  de  n'importe  quel
              processus  qui  a  accès  à la mémoire contenant le verrou (c'est-à-dire, le verrou
              peut être dans un objet mémoire partagé par de multiples processus).

       Appeler pthread_spin_init() sur un verrou tournant qui a déjà été initialisé résulte en un
       comportement indéfini.

       La  fonction  pthread_spin_destroy()  détruit  un verrou tournant précédemment initialisé,
       libérant toutes les ressources qui lui ont été attribuées. Détruire un verrou tournant qui
       n'a  pas  été  précédemment  initialisé  ou  un verrou alors qu'un autre thread le possède
       résulte en un comportement indéfini.

       Une fois que le verrou tournant a été détruit, réaliser une opération sur le verrou  autre
       que  de  l'initialiser  à  nouveau  avec  pthread_spin_init()  résulte  en un comportement
       indéfini.

       Le  résultat   de   la   réalisation   d'opérations   telles   que   pthread_spin_lock(3),
       pthread_spin_unlock(3)  et  pthread_spin_destroy()  sur  des  copies  de l'objet auquel se
       réfère lock est indéfini.

VALEUR RENVOYÉE

       En cas de réussite, ces fonctions renvoient 0. En cas d'erreur, elles renvoient un  numéro
       d'erreur. Si pthread_spin_init() échoue, le verrou n'est pas initialisé.

ERREURS

       pthread_spin_init() peut échouer avec les erreurs suivantes :

       EAGAIN Le système n'a pas assez de ressources pour initialiser un nouveau verrou tournant.

       ENOMEM Mémoire insuffisante pour initialiser le verrou tournant.

STANDARDS

       POSIX.1-2008.

HISTORIQUE

       glibc 2.2. POSIX.1-2001.

       La  prise  en charge de verrous tournants partagés par les processus est une option POSIX.
       Cette option est prise en charge dans l'implémentation de la glibc.

NOTES

       Les verrous tournants doivent être employés  de  manière  conjointe  avec  des  politiques
       d'ordonnancement  en  temps réel (SCHED_FIFO ou éventuellement SCHED_RR). L'utilisation de
       verrous  tournants  avec  des  politiques  d'ordonnancement  non  déterministes  tel   que
       SCHED_OTHER  est  le signe probablement d'une erreur de conception. Le problème est que si
       un thread opérant avec une politique de ce type  est  ordonnancé  hors  processeur  tandis
       qu'il  possède  un  verrou  tournant,  alors  les autres threads vont perdre leur temps en
       attente active du verrou  jusqu'à  ce  que  le  propriétaire  du  verrou  soit  à  nouveau
       réordonnancé et libère le verrou.

       Si  des  threads  créent  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
       générale de verrouillage. Ils sont, par définition, sujets à des inversions de priorité et
       à  des  durées d'attente active illimitées. Un développeur utilisant des verrous tournants
       doit être particulièrement prudent non seulement sur le code, mais  aussi  en  matière  de
       configuration du système, de placement des threads et d'assignation de priorité.

VOIR AUSSI

       pthread_mutex_init(3), pthread_mutex_lock(3), pthread_spin_lock(3),
       pthread_spin_unlock(3), pthreads(7)

TRADUCTION

       La traduction française de cette page de manuel a été créée par Christophe Blaess
       <https://www.blaess.fr/christophe/>, Stéphan Rafin <stephan.rafin@laposte.net>, Thierry
       Vignaud <tvignaud@mandriva.com>, François Micaux, Alain Portal <aportal@univ-montp2.fr>,
       Jean-Philippe Guérard <fevrier@tigreraye.org>, Jean-Luc Coulon (f5ibh) <jean-
       luc.coulon@wanadoo.fr>, Julien Cristau <jcristau@debian.org>, Thomas Huriaux
       <thomas.huriaux@gmail.com>, Nicolas François <nicolas.francois@centraliens.net>, Florentin
       Duneau <fduneau@gmail.com>, Simon Paillard <simon.paillard@resel.enst-bretagne.fr>, Denis
       Barbier <barbier@debian.org>, David Prévot <david@tilapin.org>, Frédéric Hantrais
       <fhantrais@gmail.com> et Jean-Pierre Giraud <jean-pierregiraud@neuf.fr>

       Cette traduction est une documentation libre ; veuillez vous reporter à la GNU General
       Public License version 3 ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩ concernant les
       conditions de copie et de distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE.

       Si vous découvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un
       message à ⟨debian-l10n-french@lists.debian.org⟩.