pthread_setcancelstate(3) Library Functions Manual pthread_setcancelstate(3) NUME pthread_setcancelstate, pthread_setcanceltype - stabilete starea i tipul anulabilitaii BIBLIOTECA Biblioteca de fire de execuie POSIX (libpthread, -lpthread) SINOPSIS #include int pthread_setcancelstate(int state, int *oldstate); int pthread_setcanceltype(int type, int *oldtype); DESCRIERE pthread_setcancelstate() stabilete starea de anulabilitate a firului apelant la valoarea indicata in state. Starea anterioara de anulare a firului este returnata in memoria tampon indicata de oldstate. Argumentul state trebuie sa aiba una dintre urmatoarele valori: PTHREAD_CANCEL_ENABLE Firul este anulabil. Aceasta este starea implicita de anulare in toate firele noi, inclusiv in firul iniial. Tipul de anulabilitate al firului determina momentul in care un fir anulabil va raspunde la o cerere de anulare. PTHREAD_CANCEL_DISABLE Firul nu este anulabil. Daca se primete o cerere de anulare, acesta este blocat pana la activarea posibilitaii de anulare. pthread_setcanceltype() stabilete tipul de anulabilitate al firului apelant la valoarea indicata in type. Tipul anterior de anulabilitate al firului este returnat in memoria tampon indicata de oldtype. Argumentul type trebuie sa aiba una dintre urmatoarele valori: PTHREAD_CANCEL_DEFERRED O cerere de anulare este amanata pana cand firul urmator apeleaza o funcie care este un punct de anulare (a se vedea pthreads(7)). Acesta este tipul implicit de anulare in toate firele noi, inclusiv in firul iniial. Chiar i in cazul anularii amanate, un punct de anulare dintr-un gestionar de semnal asincron poate fi totui luat in considerare, iar efectul este ca i cum ar fi fost o anulare asincrona. PTHREAD_CANCEL_ASYNCHRONOUS Firul poate fi anulat in orice moment; (in mod normal, acesta va fi anulat imediat dupa primirea unei cereri de anulare, dar sistemul nu garanteaza acest lucru). Operaia ,,set-and-get" efectuata de fiecare dintre aceste funcii este atomica in ceea ce privete alte fire din proces care apeleaza la aceeai funcie. VALOAREA RETURNATA In caz de succes, aceste funcii returneaza 0; in caz de eroare, ele returneaza un numar de eroare diferit de zero. ERORI-IEIRE pthread_setcancelstate() poate eua cu urmatoarea eroare: EINVAL Valoare nevalida pentru state. pthread_setcanceltype() poate eua cu urmatoarea eroare: EINVAL Valoare nevalida pentru type. ATRIBUTE Pentru o explicaie a termenilor folosii in aceasta seciune, a se vedea attributes(7). +--------------------------------------+---------------------+---------+ |Interfaa | Atribut | Valoare | +--------------------------------------+---------------------+---------+ |pthread_setcancelstate(), | Sigurana firelor | MT-Safe | |pthread_setcanceltype() | | | +--------------------------------------+---------------------+---------+ |pthread_setcancelstate(), | Async-cancel safety | AC-Safe | |pthread_setcanceltype() | | | +--------------------------------------+---------------------+---------+ STANDARDE POSIX.1-2008. ISTORIC glibc 2.0 POSIX.1-2001. NOTE Pentru detalii despre ce se intampla atunci cand un fir este anulat, consultai pthread_cancel(3). Dezactivarea pentru scurt timp a capacitaii de anulare este utila in cazul in care un fir de execuie efectueaza o aciune critica care nu trebuie intrerupta de o cerere de anulare. Atenie la dezactivarea capacitaii de anulare pentru perioade lungi de timp sau in jurul unor operaii care se pot bloca pentru perioade lungi de timp, deoarece acest lucru va face ca firul sa nu raspunda la cererile de anulare. Anulabilitate asincrona Stabilirea tipului de anulare la PTHREAD_CANCEL_ASYNCHRONOUS este rareori utila. Deoarece firul poate fi anulat in orice moment, acesta nu poate rezerva resurse in sigurana (de exemplu, alocarea de memorie cu malloc(3)), nu poate achiziiona mutex-uri, semafoare sau blocaje i aa mai departe. Rezervarea resurselor este nesigura deoarece aplicaia nu are cum sa tie care este starea acestor resurse atunci cand firul este anulat; adica, anularea a avut loc inainte ca resursele sa fie rezervate, in timp ce erau rezervate sau dupa ce au fost eliberate? In plus, unele structuri interne de date (de exemplu, lista legata a blocurilor libere gestionata de familia de funcii malloc(3)) poate fi lasata intr-o stare inconsistenta daca anularea are loc in mijlocul apelului funciei. In consecina, gestionarii de curaare inceteaza sa mai fie utili. Funciile care pot fi anulate in mod sigur in mod asincron sunt denumite funcii asincrone de anulare sigura (async-cancel-safe). POSIX.1-2001 i POSIX.1-2008 cer doar ca pthread_cancel(3), pthread_setcancelstate() i pthread_setcanceltype() sa fie async-cancel-safe. In general, alte funcii de biblioteca nu pot fi apelate in sigurana de la un fir de execuie cu anulare asincrona. Una dintre puinele circumstane in care anularea asincrona este utila este anularea unui fir care se afla intr-o bucla legata pur de calcul. Note privind portabilitatea Implementarile threading Linux permit ca argumentul oldstate din pthread_setcancelstate() sa fie NULL, caz in care informaiile despre starea anterioara de anulare nu sunt returnate apelantului. Multe alte implementari permit, de asemenea, un argument oldstat NULL, dar POSIX.1 nu specifica acest punct, astfel incat aplicaiile portabile ar trebui sa specifice intotdeauna o valoare non-NULL in oldstate. Un set exact analog de declaraii se aplica pentru argumentul oldtype al pthread_setcanceltype(). EXEMPLE Consultai pthread_cancel(3). CONSULTAI I pthread_cancel(3), pthread_cleanup_push(3), pthread_testcancel(3), pthreads(7) TRADUCERE Traducerea in limba romana a acestui manual a fost facuta de Remus- Gabriel Chelu Aceasta traducere este documentaie gratuita; citii Licena publica generala GNU Versiunea 3 sau o versiune ulterioara cu privire la condiii privind drepturile de autor. NU se asuma NICIO RESPONSABILITATE. Daca gasii erori in traducerea acestui manual, va rugam sa trimitei un e-mail la . Pagini de manual de Linux 6.12 23 iulie 2024 pthread_setcancelstate(3)