Provided by: manpages-ru-dev_4.21.0-2_all bug

ИМЯ

       pthread_exit - завершает работу вызвавшей нити

LIBRARY

       POSIX threads library (libpthread, -lpthread)

СИНТАКСИС

       #include <pthread.h>

       [[noreturn]] void pthread_exit(void *retval);

ОПИСАНИЕ

       Функция  pthread_exit()  завершает  работу  вызвавшей  нити и возвращает значение через retval, доступное
       (если к нити можно присоединиться) другой нити в том же процессе, вызвавшей pthread_join(3).

       Если есть какие-либо невызванные очищающие обработчики,  установленные  pthread_cleanup_push(3),  то  они
       выполняются  (в  обратном  регистрации  порядке).  Если  у  нити  есть  какие-либо  свои данные, то после
       выполнения очищающих обработчиков вызываются соответствующие функции удаления, в неопределённом порядке.

       Когда нить завершает выполнение связанные с процессом ресурсы (например, мьютексы,  условные  переменные,
       семафоры  и  файловые  дескрипторы)  не  освобождаются  и функции, зарегистрированные через atexit(3), не
       вызываются.

       После завершения последней нити процесса, процесс завершает работу как при вызове exit(3) с нулевых кодом
       выхода; то есть  ресурсы  процесса  освобождаются  и  вызываются  функции,  зарезервированные  с  помощью
       atexit(3).

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ

       Данная функция не возвращает выполнение вызвавшему.

ОШИБКИ

       Данная функция всегда завершается успешно.

АТРИБУТЫ

       Описание терминов данного раздела смотрите в attributes(7).
       ┌─────────────────────────────────────────────────────────────────────┬──────────────────────┬──────────┐
       │ ИнтерфейсАтрибутЗначение │
       ├─────────────────────────────────────────────────────────────────────┼──────────────────────┼──────────┤
       │ pthread_exit()                                                      │ Безвредность в нитях │ MT-Safe  │
       └─────────────────────────────────────────────────────────────────────┴──────────────────────┴──────────┘

СТАНДАРТЫ

       POSIX.1-2001, POSIX.1-2008.

ЗАМЕЧАНИЯ

       Выполнение возврата из начальной функции любой не главной нити приводит к неявному вызову pthread_exit(),
       возвращаемое значение которой является кодом выхода нити.

       Чтобы  продолжить  выполнение  других нитей, главная нить должна завершаться вызовом pthread_exit(), а не
       exit(3).

       Значение, на которое указывает  retval,  не  должно  располагаться  в  стеки  вызывающей  нити,  так  как
       содержимое этого стека не определено после завершения работы нити.

ДЕФЕКТЫ

       В  настоящее  время  в  реализуемой ядром логики есть ограничения для остановленных групп нитей с помощью
       wait(2) с мёртвым лидером группы нитей. Из-за этого могут возникнуть такие проблемы  как  заблокированный
       терминал,  если  сигнал  останова  посылается фоновому процессу, у которого лидер группы нитей уже вызвал
       pthread_exit().

СМ. ТАКЖЕ

       pthread_create(3), pthread_join(3), pthreads(7)

ПЕРЕВОД

       Русский перевод этой страницы руководства был сделан 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.

Linux man-pages 6.03                           15 декабря 2022 г.                                pthread_exit(3)