Provided by: manpages-fr-dev_3.65d1p1-1_all bug

NOM

       pthread_setcancelstate, pthread_setcanceltype - Définir l'état 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'édition des liens avec l'option -pthread.

DESCRIPTION

       La  fonction pthread_setcancelstate() définit l'état d'annulation du thread appelant à la valeur indiquée
       par state. L'ancien état d'annulation  du  thread  est  renvoyé  dans  le  tampon  pointé  par  oldstate.
       L'argument state doit avoir une des valeurs suivantes :

       PTHREAD_CANCEL_ENABLE
              Le thread peut être annulé. C'est l'état d'annulation par défaut pour tous les nouveaux threads, y
              compris  le  thread  initial.  Le  type d'annulation du thread détermine quand un thread annulable
              répondra à une requête d'annulation.

       PTHREAD_CANCEL_DISABLE
              Le thread n'est pas annulable. Si une requête d'annulation arrive, elle est bloquée jusqu'à ce que
              l'annulation soit activée.

       La fonction pthread_setcanceltype() définit le type d'annulation du thread appelant à la valeur  indiquée
       par  type. L'ancien type d'annulation du thread est renvoyé dans le tampon pointé par oldtype. L'argument
       type doit avoir une des valeurs suivantes :

       PTHREAD_CANCEL_DEFERRED
              Une requête d'annulation est retardé jusqu'à ce que le thread appelle  une  fonction  qui  est  un
              point  d'annulation  (consultez  pthreads(7)). C'est le type d'annulation par défaut pour tous les
              nouveaux threads, y compris le thread initial.

       PTHREAD_CANCEL_ASYNCHRONOUS
              Le thread peut être annulé à tout moment. Typiquement, il sera annulé dès réception de la  requête
              d'annulation, mais ce n'est pas garanti par le système.

       Les  opérations  set/get  effectuées  par  ces  fonctions  sont atomiques, eu égard aux autres threads du
       processus qui appellent la même fonction.

VALEUR RENVOYÉE

       En cas de réussite, ces fonctions renvoient 0 ; en cas d'erreur elles renvoient un  numéro  d'erreur  non
       nul.

ERREURS

       pthread_setcancelstate() peut échouer avec l'erreur suivante :

       EINVAL Valeur invalide pour state.

       pthread_setcanceltype() peut échouer avec l'erreur suivante :

       EINVAL Valeur invalide pour type.

CONFORMITÉ

       POSIX.1-2001.

NOTES

       Pour des détails sur ce qui se passe quand un thread est annulé, voyez pthread_cancel(3).

       Désactiver  brièvement  l'annulation  peut être pratique si un thread effectue une action critique qui ne
       doit pas être interrompue par une requête d'annulation. Mais attention de ne pas désactiver  l'annulation
       sur  de  longues  périodes,  ou  autour d'opérations qui peuvent ploquer pendant un long moment, car cela
       empêcherait le thread de répondre aux requêtes d'annulation.

       Le type d'annulation est rarement mis à PTHREAD_CANCEL_ASYNCHRONOUS. Comme le thread pourrait être annulé
       n'importe quand, il ne pourrait pas réserver de ressources (par exemple en allouant de  la  mémoire  avec
       malloc(3))  de  manière  sûre,  acquérir des verrous exclusifs (mutex), des sémaphores, des verrous, etc.
       Réserver des ressources n'est pas sûr, car l'application n'a aucun  moyen  de  connaître  l'état  de  ces
       ressources  quand  le  thread  est  annulé ; en d'autres termes, l'annulation arrive-t-elle avant que les
       ressources n'aient été réservées, pendant qu'elles sont réservées, ou après qu'elles ont  été  libérées ?
       De  plus,  certaines  structures de données internes (par exemple la liste chaînée des blocs libres gérée
       par la famille de fonctions malloc(3)) pourraient se retrouver dans un état incohérent si l'annulation se
       passe au milieu d'un appel de fonction. En conséquence de quoi les  gestionnaires  de  nettoyage  perdent
       toute  utilité.  Les  fonctions qui peuvent sans risque être annulées de manière asynchrone sont appelées
       des   fonctions   async-cancel-safe.   POSIX.1-2001   nécessite    seulement    que    pthread_cancel(3),
       pthread_setcancelstate()  et  pthread_setcanceltype()   soient  async-cancel-safe. En général, les autres
       fonctions de la bibliothèque ne peuvent pas être appelées de manière  sûre  depuis  un  thread  annulable
       immédiatement.  Une  des  rares circonstances dans lesquelles une annulation immédiate est utile est pour
       l'annulation d'un thread qui est dans une boucle qui ne fait que des calculs.

       Les implémentations de Linux autorisent l'argument oldstate de  pthread_setcancelstate()   à  être  NULL,
       auquel  cas  l'information  au  sujet  de  l'état  antérieur d'annulation n'est pas renvoyé à l'appelant.
       Beaucoup d'autres implémentations autorisent  aussi  un  argument  oldstat  NULL,  mais  POSIX.1-2001  ne
       spécifie  pas  ce  point, si bien que les applications portables devraient toujours donner une valeur non
       NULL à oldstate. Le même type de raisonnement s'applique à l'argument oldtype de pthread_setcanceltype().

EXEMPLE

       Consultez pthread_cancel(3).

VOIR AUSSI

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

COLOPHON

       Cette page fait partie de la publication 3.65 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/>.

       Denis Barbier (2010).

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

Linux                                           24 novembre 2008                       PTHREAD_SETCANCELSTATE(3)