Завершить поток
#include <pthread.h>void pthread_exit( void *value_ptr );
libc
Функция pthread_exit() терминирует вызвавший поток. Если поток является присоединяемым, то значение value_ptr становится доступным потоку, вызвавшему pthread_join(), в качестве статуса завершения. Если поток не является присоединяемым (находится в состоянии "detached"), то все системные ресурсы, занятые потоком, немедленно освобождаются.
Перед завершением потока вызываются все зарегистрированные обработчики терминирования, включая TLS-деструкторы. Завершение потока не освобождает ресурсы процесса, включая мьютексы и файловые дескрипторы, а также не выполняет действия, предусмотренные atexit().
Неявный вызов pthread_exit() выполняется при возвращении из основной потоковой функции любого потока, кроме main(). При этом значение, возвращенное из потоковой функции является статусом завершения потока.
![]() | Не следует вызывать pthread_exit() из зарегистрированных обработчиков терминирования и TLS-деструкторов. |
Для последнего потока в процессе pthread_exit() выполняется как exit( 0 ).
POSIX 1003.1 Threads
atexit(), exit(), main(), pthread_create(), pthread_cleanup_push(), pthread_cleanup_pop(), pthread_join(), ThreadDestroy().
Предыдущий раздел: Описание API системной библиотеки