Provided by:
manpages-fr_2.45.1-1_all 
NOM
sem_overview - Panorama des sémaphores POSIX
DESCRIPTION
Les sémaphores POSIX permettent aux processus et aux threads de se syn‐
chroniser.
Un sémaphore est un entier dont la valeur ne peut jamais être négative.
Deux opérations peuvent être effectuées : incrémenter la valeur du
sémaphore de 1 (sem_post(3)), ou décrémenter la valeur du sémaphore de
1 (sem_wait(3)). Si la valeur courante est 0, une opération sem_wait(3)
bloque jusqu’à ce que la valeur devienne strictement positive.
Les sémaphores POSIX sont de deux types : les sémaphores nommés et les
sémaphores anonymes.
S maphores nomm s
Un sémaphore nommé est identifié par un nom de la forme /un_nom. Deux
processus peuvent utiliser un même sémaphore nommé en passant le même
nom à sem_open(3).
La fonction sem_open(3) crée un nouveau sémaphore nommé ou en ouvre un
existant. Après l’ouverture de ce sémaphore, il peut être utilisé avec
sem_post(3) et sem_wait(3). Lorsqu’un processus a fini d’utiliser le
sémaphore, il peut utiliser sem_close(3) pour le fermer. Lorsque tous
les processus ont terminé de l’utiliser, il peut être supprimé du
système avec sem_unlink(3).
S maphores anonymes (s maphores en m moire)
Un sémaphore anonyme n’a pas de nom. Il est placé dans une région de la
mémoire qui est partagée entre plusieurs threads (sémaphore partagé par
des threads) ou processus (sémaphore partagé par des processus). Un
sémaphore partagé par des threads est placé dans une région de la
mémoire partagée entre les threads d’un processus, par exemple une
variable globale. Un sémaphore partagé par des processus doit être
placé dans une région de mémoire partagée (par exemple un segment de
mémoire partagée Système V créé avec semget(2), ou un objet de mémoire
partagée POSIX créé avec shm_open(3)).
Avant son utilisation, un sémaphore anonyme doit être initialisé avec
sem_init(3). Il peut ensuite être utilisé avec sem_post(3) et
sem_wait(3). Lorsque le sémaphore n’est plus nécessaire, et avant que
la mémoire où il est placé ne soit libérée, le sémaphore doit être
détruit avec sem_destroy(3).
Versions
Avant le noyau 2.6, Linux ne proposait que les sémaphores anonymes
partagés par des threads. Sur un système Linux 2.6 avec une glibc four‐
nissant l’implémentation des threads NPTL, une implémentation complète
des sémaphores POSIX est fournie.
Persistence
Les sémaphores POSIX nommés sont persistants dans le noyau : s’il n’est
pas supprimé avec sem_unlink() un sémaphore existe tant que le système
n’est pas éteint.
Liaison
Les programmes utilisant l’API des sémaphores POSIX doit être compilé
avec cc -lrt pour être lié avec la bibliothèque temps‐réel, librt.
Acc der aux s maphores nomm s par le syst me de fichiers
Sous Linux, les sémaphores nommés sont créés sur un système de fichiers
virtuel, en général monté sur /dev/shm, avec des noms de la forme
sem.nom.
CONFORMIT
POSIX.1-2001.
NOTES
Les sémaphores Système V (semget(2), semop(2), etc.) sont une API de
sémaphores plus vieille. Les sémaphores POSIX fournissent une interface
plus simple et mieux conçue que les sémaphores Système V. En revanche,
les sémaphores POSIX sont moins largement disponibles que les
sémaphores Système V (surtout sur les systèmes plus anciens).
EXEMPLE
Un exemple d’utilisation des diverses fonctions des sémaphores POSIX
est donné dans sem_wait(3).
sem_close(3), sem_destroy(3), sem_init(3), sem_getvalue(3),
sem_open(3), sem_post(3), sem_unlink(3), sem_wait(3), pthreads(7)
TRADUCTION
Cette page de manuel a été traduite et mise à jour par Christophe
Blaess <http://www.blaess.fr/christophe/> entre 1996 et 2003, puis par
Alain Portal <aportal AT univ-montp2 DOT fr> jusqu’en 2006, et mise à
disposition sur http://manpagesfr.free.fr/.
Les mises à jour et corrections de la version présente dans Debian sont
directement gérées par Julien Cristau <jcristau@debian.org> et l’équipe
francophone de traduction de Debian.
Veuillez signaler toute erreur de traduction en écrivant à
<debian-l10n-french@lists.debian.org> ou par un rapport de bogue sur le
paquet manpages-fr.
Vous pouvez toujours avoir accès à la version anglaise de ce document
en utilisant la commande « man -L C <section> <page_de_man> ».