Provided by:
manpages-fr-dev_3.27fr1.4-1_all 
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> >>.