Man page - pthread_setcanceltype(3)

Packages contains this manual

Available languages:

en fr ja ru ro

Manual

pthread_setcancelstate

NOM
BIBLIOTHÈQUE
SYNOPSIS
DESCRIPTION
VALEUR RENVOYÉE
ERREURS
ATTRIBUTS
STANDARDS
HISTORIQUE
NOTES
Annulation asynchrone
Notes sur la portabilité
EXEMPLES
VOIR AUSSI
TRADUCTION

NOM

pthread_setcancelstate, pthread_setcanceltype — DĂ©finir l’état et le type d’annulation

BIBLIOTHÈQUE

BibliothĂšque de threads POSIX ( libpthread , -lpthread )

SYNOPSIS

#include <pthread.h>

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

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.

MĂȘme avec une annulation retardĂ©e, un point d’annulation dans un gestionnaire de signal asynchrone peut encore ĂȘtre pris en compte et l’effet est similaire Ă  s’il s’agissait d’une annulation asynchrone.

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 succùs, ces fonctions renvoient 0 ; en cas d’erreur, elles renvoient un code 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 .

ATTRIBUTS

Pour une explication des termes utilisés dans cette section, consulter attributes (7).

Image grohtml-3871054-1.png

STANDARDS

POSIX.1-2008.

HISTORIQUE

glibc 2.0 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.

Annulation asynchrone

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 et POSIX.1-2008 nĂ©cessitent 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.

Notes sur la portabilité

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Ă©e Ă  l’appelant. Beaucoup d’autres implĂ©mentations autorisent aussi un argument oldstat NULL, mais POSIX.1 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 ().

EXEMPLES

Consultez pthread_cancel (3).

VOIR AUSSI

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

TRADUCTION

La traduction française de cette page de manuel a été créée par Christophe Blaess <https://www.blaess.fr/christophe/>, Stéphan Rafin <stephan.rafin@laposte.net>, Thierry Vignaud <tvignaud@mandriva.com>, François Micaux, Alain Portal <aportal@univ-montp2.fr>, Jean-Philippe Guérard <fevrier@tigreraye.org>, Jean-Luc Coulon (f5ibh) <jean-luc.coulon@wanadoo.fr>, Julien Cristau <jcristau@debian.org>, Thomas Huriaux <thomas.huriaux@gmail.com>, Nicolas François <nicolas.francois@centraliens.net>, Florentin Duneau <fduneau@gmail.com>, Simon Paillard <simon.paillard@resel.enst-bretagne.fr>, Denis Barbier <barbier@debian.org>, David Prévot <david@tilapin.org>, Frédéric Hantrais <fhantrais@gmail.com> et Jean-Pierre Giraud <jean-pierregiraud@neuf.fr>

Cette traduction est une documentation libre ; veuillez vous reporter à la GNU General Public License version 3 concernant les conditions de copie et de distribution. Il n’y a aucune RESPONSABILITÉ LÉGALE.

Si vous découvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message à debian-l10n-french@lists.debian.org .