Provided by: manpages-fr-dev_3.27fr1.4-1_all bug

NOM

       pthread_setcancelstate,  pthread_setcanceltype  -  Definir l'etat et le
       type d'annulation

SYNOPSIS

       #include <pthread.h>

       int pthread_setcancelstate(int state, int *oldstate);
       int pthread_setcanceltype(int type, int *oldtype);

       Compilez et effectuez l'edition des liens avec l'option -pthread.

DESCRIPTION

       La fonction pthread_setcancelstate()  definit  l'etat  d'annulation  du
       thread   appelant  a  la  valeur  indiquee  par  state.  L'ancien  etat
       d'annulation du thread est renvoye dans le tampon pointe par  oldstate.
       L'argument state doit avoir une des valeurs suivantes :

       PTHREAD_CANCEL_ENABLE
              Le thread peut etre annule. C'est l'etat d'annulation par defaut
              pour tous les nouveaux threads, y compris le thread initial.  Le
              type  d'annulation du thread determine quand un thread annulable
              repondra a une requete d'annulation.

       PTHREAD_CANCEL_DISABLE
              Le thread n'est  pas  annulable.  Si  une  requete  d'annulation
              arrive,  elle  est  bloquee  jusqu'a  ce  que  l'annulation soit
              activee.

       La fonction pthread_setcanceltype() definit  le  type  d'annulation  du
       thread   appelant   a  la  valeur  indiquee  par  type.  L'ancien  type
       d'annulation du thread est renvoye dans le tampon pointe  par  oldtype.
       L'argument type doit avoir une des valeurs suivantes :

       PTHREAD_CANCEL_DEFERRED
              Une  requete  d'annulation  est retarde jusqu'a ce que le thread
              appelle une fonction qui est un  point  d'annulation  (consultez
              pthreads(7)).  C'est  le  type d'annulation par defaut pour tous
              les nouveaux threads, y compris le thread initial.

       PTHREAD_CANCEL_ASYNCHRONOUS
              Le thread peut etre annule a tout moment. Typiquement,  il  sera
              annule  des  reception de la requete d'annulation, mais ce n'est
              pas garanti par le systeme.

       Les operations set/get effectuees par ces fonctions sont atomiques,  eu
       egard aux autres threads du processus qui appellent la meme fonction.

VALEUR RENVOY'EE

       En  cas  de reussite, ces fonctions renvoient 0 ; en cas d'erreur elles
       renvoient un numero d'erreur non nul.

ERREURS

       pthread_setcancelstate() peut echouer avec l'erreur suivante :

       EINVAL Valeur invalide pour state.

       pthread_setcanceltype() peut echouer avec l'erreur suivante :

       EINVAL Valeur invalide pour type.

CONFORMIT'E

       POSIX.1-2001.

NOTES

       Pour des details sur ce qui se passe quand un thread est annule,  voyez
       pthread_cancel(3).

       Desactiver  brievement  l'annulation  peut  etre  pratique si un thread
       effectue une action critique qui ne doit pas etre interrompue  par  une
       requete  d'annulation. Mais attention de ne pas desactiver l'annulation
       sur de longues periodes, ou autour  d'operations  qui  peuvent  ploquer
       pendant  un long moment, car cela empecherait le thread de repondre aux
       requetes d'annulation.

       Le type d'annulation est rarement  mis  a  PTHREAD_CANCEL_ASYNCHRONOUS.
       Comme  le  thread  pourrait etre annule n'importe quand, il ne pourrait
       pas reserver de ressources (par exemple en allouant de la memoire  avec
       malloc(3)) de maniere sure, acquerir des verrous exclusifs (mutex), des
       semaphores, des verrous, etc. Reserver des ressources  n'est  pas  sur,
       car l'application n'a aucun moyen de connaitre l'etat de ces ressources
       quand  le  thread  est  annule ;  en  d'autres   termes,   l'annulation
       arrive-t-elle  avant  que les ressources n'aient ete reservees, pendant
       qu'elles sont reservees, ou apres qu'elles ont ete liberees ? De  plus,
       certaines  structures de donnees internes (par exemple la liste chainee
       des  blocs  libres  geree  par  la  famille  de  fonctions   malloc(3))
       pourraient  se  retrouver  dans  un  etat incoherent si l'annulation se
       passe au milieu d'un appel de fonction.  En  consequence  de  quoi  les
       gestionnaires  de  nettoyage  perdent  toute utilite. Les fonctions qui
       peuvent sans risque etre annulees de maniere asynchrone  sont  appelees
       des  fonctions  async-cancel-safe. POSIX.1-2001 necessite seulement que
       pthread_cancel(3), pthread_setcancelstate() et  pthread_setcanceltype()
       soient  async-cancel-safe.  En  general,  les  autres  fonctions  de la
       bibliotheque ne peuvent pas etre appelees de  maniere  sure  depuis  un
       thread  annulable  immediatement.  Une  des  rares  circonstances  dans
       lesquelles une annulation immediate est utile  est  pour  l'annullation
       d'un thread qui est dans une boucle qui ne fait que des calculs.

       Les   implementations   de  Linux  autorisent  l'argument  oldstate  de
       pthread_setcancelstate()  a etre  NULL,  auquel  cas  l'information  au
       sujet  de l'etat anterieur d'annulation n'est pas renvoye a l'appelant.
       Beaucoup d'autres implementations autorisent aussi un argument  oldstat
       NULL,  mais  POSIX.1-2001  ne  specifie  pas  ce point, si bien que les
       applications portables devraient toujours donner une valeur non NULL  a
       oldstate.  Le meme type de raisonnement s'applique a l'argument oldtype
       de pthread_setcanceltype().

EXEMPLE

       Consultez pthread_cancel(3).

VOIR AUSSI

       pthread_cleanup_push(3),   pthread_cancel(3),    pthread_testcancel(3),
       pthreads(7)

COLOPHON

       Cette  page  fait  partie  de  la  publication 3.27 du projet man-pages
       Linux. Une description du projet et des instructions pour signaler  des
       anomalies       peuvent       etre       trouvees      a      l'adresse
       <URL:http://www.kernel.org/doc/man-pages/>.

TRADUCTION

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

       Denis Barbier (2010).

       Veuillez   signaler   toute   erreur   de   traduction  en  ecrivant  a
       <debian-l10n-french@lists.debian.org> ou par un rapport de bogue sur le
       paquet manpages-fr.

       Vous  pouvez  toujours avoir acces a la version anglaise de ce document
       en utilisant la commande << man -L C <section> <page_de_man> >>.