Provided by: manpages-ru-dev_4.19.0-7_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 ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩ или более позднюю, чтобы
       узнать об условиях авторского права. Мы не несем НИКАКОЙ ОТВЕТСТВЕННОСТИ.

       Если вы обнаружите ошибки в переводе  этой  страницы  руководства,  пожалуйста,  отправьте
       электронное письмо на ⟨man-pages-ru-talks@lists.sourceforge.net⟩.