Man page - pthread_spin_init(3)

Packages contains this manual

Available languages:

en fr ru ro

Manual

pthread_spin_init

NOM
BIBLIOTHÈQUE
SYNOPSIS
DESCRIPTION
VALEUR RENVOYÉE
ERREURS
STANDARDS
HISTORIQUE
NOTES
VOIR AUSSI
TRADUCTION

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 .