Provided by: manpages-fr_3.57d1p1-1_all bug

NOM

       sem_overview - Panorama des sémaphores POSIX

DESCRIPTION

       Les sémaphores POSIX permettent aux processus et aux threads de se synchroniser.

       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 ; c'est-à-dire un
              chaîne    terminée    par    un    caractère    nul    pouvant    avoir     jusqu'à
              NAME_MAX-4 (251) caractères,  commençant  par une barre oblique (« / ») suivie d'un
              caractère ou plus, aucun de ces derniers n'étant une barre oblique. 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  System V  créé  avec  shmget(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).

       Le reste de cette section décrit certains détails spécifiques à l'implémentation Linux des
       sémaphores POSIX.

   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 fournissant l'implémentation des threads
       NPTL, une implémentation complète des sémaphores POSIX est fournie.

   Persistance
       Les sémaphores POSIX nommés sont persistants dans le noyau : s'il n'est pas supprimé  avec
       sem_unlink(3) un sémaphore existe tant que le système n'est pas éteint.

   Édition des liens
       Les  programmes  utilisant  l'API  des sémaphores POSIX doit être compilé avec cc -pthread
       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.un_nom (ce qui explique que les
       noms des sémaphores soient limités à NAME_MAX-4 plutôt qu'à NAME_MAX caractères).

       Depuis Linux 2.6.19, il est possible de placer des listes  de  contrôle  d'accès  sur  les
       fichiers de ce répertoire au niveau groupe et utilisateur.

CONFORMITÉ

       POSIX.1-2001.

NOTES

       Les  sémaphores  System 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  System V.  En  revanche,  les  sémaphores  POSIX  sont  moins  largement
       disponibles que les sémaphores System 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).

VOIR AUSSI

       sem_close(3),  sem_destroy(3),  sem_getvalue(3),  sem_init(3),  sem_open(3),  sem_post(3),
       sem_unlink(3), sem_wait(3), pthreads(7)

COLOPHON

       Cette page fait partie de la publication 3.57 du projet man-pages Linux.  Une  description
       du  projet  et  des  instructions  pour  signaler  des  anomalies  peuvent être trouvées à
       l'adresse http://www.kernel.org/doc/man-pages/.

TRADUCTION

       Depuis   2010,   cette   traduction   est   maintenue   à   l'aide   de    l'outil    po4a
       <http://po4a.alioth.debian.org/>  par l'équipe de traduction francophone au sein du projet
       perkamon <http://perkamon.alioth.debian.org/>.

       Christophe   Blaess   <http://www.blaess.fr/christophe/>   (1996-2003),    Alain    Portal
       <http://manpagesfr.free.fr/>  (2003-2006).  Julien  Cristau  et  l'équipe  francophone  de
       traduction de Debian (2006-2009).

       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> ».