pthread_cancel()

Запросить прерывание выполнения потока (используя механизм точек остановки)

Прототип:

#include <pthread.h>
int pthread_cancel( pthread_t thread );

Аргументы:

thread
Идентификатор потока, чье выполнение необходимо прервать. Он может быть получен с помощью pthread_create() или pthread_self().

Библиотека:

libc

Описание:

Функция pthread_cancel() запрашивает у целевого потока thread добровольное прерывание выполнения (потенциально приводящее к его терминированию). Состояние потока и заданный способ прерывания выполнения (см. PTHREAD_CANCEL_*) определяют эффект от подобного запроса.

Когда выполняется прерывание в целевом потоке выполняются соответствующие деструкторы (см. pthread_cleanup_push()). Когда последний из них вернет управление, целевой поток обработает TLS-деструкторы (см. pthread_key_create()). Только после этого поток терминируется. Прерывание целевого происходит асинхронно с вызывающим и не блокирует его.

Возвращаемое значение:

EOK
Успешное завершение.
ESRCH
Поток с идентификатором thread не найден.

Классификация:

POSIX 1003.1 Threads

Безопасность использования
Точка остановки потока
Нет
Обработчик прерываний
Нет
Обработчик сигналов
Да
В потоке
Да

Тематические ссылки:

pthread_cleanup_push(), pthread_cleanup_pop(), pthread_cond_wait(), pthread_cond_wait_interruptible(), pthread_cond_timedwait(), pthread_exit(), pthread_join(), pthread_key_create(), pthread_setcancelstate(), pthread_setcanceltype(), pthread_testcancel(), ThreadCancel()




Предыдущий раздел: Описание API системной библиотеки