- bullseye-backports 4.18.1-1~bpo11+1
PTHREAD_CLEANUP_PUSH_DEFER_NP(3) | Руководство программиста Linux | PTHREAD_CLEANUP_PUSH_DEFER_NP(3) |
ИМЯ¶
pthread_cleanup_push_defer_np, pthread_cleanup_pop_restore_np - добавляет и удаляет очищающие обработчики отмены нити при сохранении типа отмены
СИНТАКСИС¶
#include <pthread.h>
void pthread_cleanup_push_defer_np(void (*routine)(void *), void *arg); void pthread_cleanup_pop_restore_np(int execute);
Компилируется и компонуется вместе с -pthread.
pthread_cleanup_push_defer_np(), pthread_cleanup_pop_defer_np():
ОПИСАНИЕ¶
Эти функции работают также как pthread_cleanup_push(3) и pthread_cleanup_pop(3), за исключением различий, описанных в данной справочной странице.
Подобно pthread_cleanup_push(3), pthread_cleanup_push_defer_np() добавляет routine в стек нити к очищающим обработчикам отмены. Кроме этого, она также сохраняет текущий тип отмены нити, и изменяет тип отмены на «отложенный» (смотрите pthread_setcanceltype(3)); это гарантирует, что очистка при отмене произойдёт даже, если тип отмены нити перед вызовом был «асинхронный».
Подобно pthread_cleanup_pop(3), pthread_cleanup_pop_restore_np() удаляет самый верхний очищающий обработчик из стека нити очищающих обработчиков отмены. Кроме этого, она восстанавливает тип отмены нити в значение на момент, когда была вызвана pthread_cleanup_push_defer_np().
Вызывающий должен гарантировать, что вызовы этих функций будут попарными внутри одной функции, и на одном лексическом уровне вложенности. Остальные ограничения описаны в pthread_cleanup_push(3).
Последовательность вызовов:
pthread_cleanup_push_defer_np(routine, arg); pthread_cleanup_pop_restore_np(execute);
эквивалентна (но короче и эффективнее):
int oldtype; pthread_cleanup_push(routine, arg); pthread_setcanceltype(PTHREAD_CANCEL_DEFERRED, &oldtype); ... pthread_setcanceltype(oldtype, NULL); pthread_cleanup_pop(execute);
СООТВЕТСТВИЕ СТАНДАРТАМ¶
Данные функции являются не стандартизированными расширениями GNU, о чём свидетельствует наличие суффикса «_np» (nonportable).
СМ. ТАКЖЕ¶
pthread_cancel(3), pthread_cleanup_push(3), pthread_setcancelstate(3), pthread_testcancel(3), pthreads(7)
ЗАМЕЧАНИЯ¶
Эта страница является частью проекта Linux man-pages версии 5.10. Описание проекта, информацию об ошибках и последнюю версию этой страницы можно найти по адресу https://www.kernel.org/doc/man-pages/.
ПЕРЕВОД¶
Русский перевод этой страницы руководства был сделан Alexey, Azamat Hackimov <azamat.hackimov@gmail.com>, kogamatranslator49 <r.podarov@yandex.ru>, Kogan, Max Is <ismax799@gmail.com>, Yuri Kozlov <yuray@komyakino.ru> и Иван Павлов <pavia00@gmail.com>
Этот перевод является бесплатной документацией; прочитайте Стандартную общественную лицензию GNU версии 3 или более позднюю, чтобы узнать об условиях авторского права. Мы не несем НИКАКОЙ ОТВЕТСТВЕННОСТИ.
Если вы обнаружите ошибки в переводе этой страницы руководства, пожалуйста, отправьте электронное письмо на man-pages-ru-talks@lists.sourceforge.net.
15 сентября 2017 г. | Linux |