pthread_cleanup_push_defer_np(3) Library Functions Manual pthread_cleanup_push_defer_np(3)

pthread_cleanup_push_defer_npp, pthread_cleanup_pop_restore_np - gestionari „push” și „pop” (punere și scoatere) de curățare a anulării firelor în timp ce salvează tipul de anulabilitate

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

#include <pthread.h>
void pthread_cleanup_push_defer_np(void (*routine)(void *), void *arg);
void pthread_cleanup_pop_restore_np(int execute);
Cerințe pentru macrocomenzi de testare a caracteristicilor pentru glibc (consultați feature_test_macros(7)):

pthread_cleanup_push_defer_np(), pthread_cleanup_pop_defer_np():

    _GNU_SOURCE

Aceste funcții sunt identice cu pthread_cleanup_push(3) și pthread_cleanup_pop(3), cu excepția diferențelor menționate în această pagină.

La fel ca pthread_cleanup_push(3), pthread_cleanup_push_defer_np() plasează routine în stiva de gestionari de curățare a anulării firului. În plus, salvează, de asemenea, tipul curent de anulabilitate al firului și stabilește tipul de anulabilitate la „deferred” (amânat) (a se vedea pthread_setcanceltype(3)); acest lucru asigură că curățarea anulării va avea loc chiar dacă tipul de anulabilitate al firului era „asincron” înainte de apel.

La fel ca pthread_cleanup_pop(3), pthread_cleanup_pop_restore_np() scoate cel mai de sus gestionar de curățare din stiva de gestionari de curățare a anulării a firului. În plus, acesta restabilește tipul de anulabilitate al firului la valoarea sa de la momentul în care a avut loc pthread_cleanup_push_defer_np() corespunzător.

Apelantul trebuie să se asigure că apelurile la aceste funcții sunt împerecheate în cadrul aceleiași funcții și la același nivel de structurare lexicală. Se aplică alte restricții, astfel cum sunt descrise în pthread_cleanup_push(3).

Această secvență de apeluri:


pthread_cleanup_push_defer_np(routine, arg);
pthread_cleanup_pop_restore_np(execute);

este echivalentă cu (dar mai scurtă și mai eficientă decât):


int oldtype;
pthread_cleanup_push(routine, arg);
pthread_setcanceltype(PTHREAD_CANCEL_DEFERRED, &oldtype);
...
pthread_setcanceltype(oldtype, NULL);
pthread_cleanup_pop(execute);

GNU; de aici și sufixul „_np” (neportabil) din denumiri.

glibc 2.0

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

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.

2 mai 2024 Pagini de manual de Linux 6.8