Provided by: manpages-fr-dev_4.26.0-1_all 

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 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.
Pages du manuel de Linux 6.9.1 2 mai 2024 pthread_spin_init(3)