Provided by: manpages-ro-dev_4.27.0-1_all bug

NUME

       pthread_setcancelstate, pthread_setcanceltype - stabilește starea și tipul anulabilității

BIBLIOTECA

       Biblioteca de fire de execuție POSIX (libpthread, -lpthread)

SINOPSIS

       #include <pthread.h>

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

DESCRIERE

       pthread_setcancelstate()  stabilește  starea  de  anulabilitate a firului apelant la valoarea indicată în
       state. Starea anterioară de anulare a firului este returnată în  memoria  tampon  indicată  de  oldstate.
       Argumentul state trebuie să aibă una dintre următoarele valori:

       PTHREAD_CANCEL_ENABLE
              Firul  este  anulabil.  Aceasta  este starea implicită de anulare în toate firele noi, inclusiv în
              firul inițial. Tipul de anulabilitate al firului determină momentul în care  un  fir  anulabil  va
              răspunde la o cerere de anulare.

       PTHREAD_CANCEL_DISABLE
              Firul nu este anulabil. Dacă se primește o cerere de anulare, acesta este blocat până la activarea
              posibilității de anulare.

       pthread_setcanceltype()  stabilește  tipul  de  anulabilitate  al firului apelant la valoarea indicată în
       type. Tipul anterior de anulabilitate al firului este returnat în memoria  tampon  indicată  de  oldtype.
       Argumentul type trebuie să aibă una dintre următoarele valori:

       PTHREAD_CANCEL_DEFERRED
              O  cerere de anulare este amânată până când firul următor apelează o funcție care este un punct de
              anulare (a se vedea pthreads(7)). Acesta este tipul implicit  de  anulare  în  toate  firele  noi,
              inclusiv în firul inițial.

              Chiar  și  în  cazul  anulării  amânate, un punct de anulare dintr-un gestionar de semnal asincron
              poate fi totuși luat în considerare, iar efectul este ca și cum ar fi fost o anulare asincronă.

       PTHREAD_CANCEL_ASYNCHRONOUS
              Firul poate fi anulat în orice moment; (în mod normal, acesta va fi anulat imediat  după  primirea
              unei cereri de anulare, dar sistemul nu garantează acest lucru).

       Operația  „set-and-get”  efectuată de fiecare dintre aceste funcții este atomică în ceea ce privește alte
       fire din proces care apelează la aceeași funcție.

VALOAREA RETURNATĂ

       În caz de succes, aceste funcții returnează 0; în caz de  eroare,  ele  returnează  un  număr  de  eroare
       diferit de zero.

ERORI-IEȘIRE

       pthread_setcancelstate() poate eșua cu următoarea eroare:

       EINVAL Valoare nevalidă pentru state.

       pthread_setcanceltype() poate eșua cu următoarea eroare:

       EINVAL Valoare nevalidă pentru type.

ATRIBUTE

       Pentru o explicație a termenilor folosiți în această secțiune, a se vedea attributes(7).
       ┌───────────────────────────────────────────────────────────────────────┬─────────────────────┬─────────┐
       │ InterfațăAtributValoare │
       ├───────────────────────────────────────────────────────────────────────┼─────────────────────┼─────────┤
       │ pthread_setcancelstate(), pthread_setcanceltype()                     │ Siguranța firelor   │ MT-Safe │
       ├───────────────────────────────────────────────────────────────────────┼─────────────────────┼─────────┤
       │ pthread_setcancelstate(), pthread_setcanceltype()                     │ Async-cancel safety │ AC-Safe │
       └───────────────────────────────────────────────────────────────────────┴─────────────────────┴─────────┘

STANDARDE

       POSIX.1-2008.

ISTORIC

       glibc 2.0 POSIX.1-2001.

NOTE

       Pentru detalii despre ce se întâmplă atunci când un fir este anulat, consultați pthread_cancel(3).

       Dezactivarea  pentru  scurt  timp a capacității de anulare este utilă în cazul în care un fir de execuție
       efectuează o acțiune critică care nu trebuie întreruptă de o cerere de anulare. Atenție  la  dezactivarea
       capacității  de anulare pentru perioade lungi de timp sau în jurul unor operații care se pot bloca pentru
       perioade lungi de timp, deoarece acest lucru va face ca firul să nu răspundă la cererile de anulare.

   Anulabilitate asincronă
       Stabilirea tipului de anulare la PTHREAD_CANCEL_ASYNCHRONOUS este rareori utilă. Deoarece firul poate  fi
       anulat  în orice moment, acesta nu poate rezerva resurse în siguranță (de exemplu, alocarea de memorie cu
       malloc(3)), nu poate achiziționa  mutex-uri,  semafoare  sau  blocaje  și  așa  mai  departe.  Rezervarea
       resurselor  este  nesigură  deoarece aplicația nu are cum să știe care este starea acestor resurse atunci
       când firul este anulat; adică, anularea a avut loc înainte ca resursele să fie rezervate, în timp ce erau
       rezervate sau după ce au fost eliberate? În plus, unele structuri interne  de  date  (de  exemplu,  lista
       legată  a  blocurilor  libere  gestionată  de  familia de funcții malloc(3)) poate fi lăsată într-o stare
       inconsistentă dacă anularea are loc în mijlocul apelului funcției. În consecință, gestionarii de curățare
       încetează să mai fie utili.

       Funcțiile care pot fi anulate în mod sigur în mod asincron sunt denumite  funcții  asincrone  de  anulare
       sigură    (async-cancel-safe).    POSIX.1-2001   și   POSIX.1-2008   cer   doar   ca   pthread_cancel(3),
       pthread_setcancelstate() și pthread_setcanceltype() să fie async-cancel-safe. În general, alte funcții de
       bibliotecă nu pot fi apelate în siguranță de la un fir de execuție cu anulare asincronă.

       Una dintre puținele circumstanțe în care anularea asincronă este utilă este anularea  unui  fir  care  se
       află într-o buclă legată pur de calcul.

   Note privind portabilitatea
       Implementările  threading  Linux  permit ca argumentul oldstate din pthread_setcancelstate() să fie NULL,
       caz în care informațiile despre starea anterioară de anulare nu sunt returnate  apelantului.  Multe  alte
       implementări  permit, de asemenea, un argument oldstat NULL, dar POSIX.1 nu specifică acest punct, astfel
       încât aplicațiile portabile ar trebui să specifice întotdeauna o valoare non-NULL  în  oldstate.  Un  set
       exact analog de declarații se aplică pentru argumentul oldtype al pthread_setcanceltype().

EXEMPLE

       Consultați pthread_cancel(3).

CONSULTAȚI ȘI

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

TRADUCERE

       Traducerea    în   limba   română   a   acestui   manual   a   fost   făcută   de   Remus-Gabriel   Chelu
       <remusgabriel.chelu@disroot.org>

       Această traducere este  documentație  gratuită;  citiți  Licența publică generală GNU Versiunea 3  sau  o
       versiune   ulterioară   cu  privire  la  condiții  privind  drepturile  de  autor.   NU  se  asumă  NICIO
       RESPONSABILITATE.

       Dacă găsiți erori în traducerea acestui manual, vă rugăm să  trimiteți  un  e-mail  la  translation-team-
       ro@lists.sourceforge.net.

Pagini de manual de Linux 6.9.1                    2 mai 2024                          pthread_setcancelstate(3)