Provided by: manpages-ru-dev_4.27.0-1_all bug

НАИМЕНОВАНИЕ

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

БИБЛИОТЕКА

       Библиотека потоков POSIX (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-2008.

ИСТОРИЯ

       POSIX.1-2001.

ПРИМЕЧАНИЯ

       Выполнение возврата из начальной функции любой не главной нити приводит к неявному вызову 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>,      Darima      Kogan
       <silverdk99@gmail.com>, Max  Is  <ismax799@gmail.com>,  Yuri  Kozlov  <yuray@komyakino.ru>,  Иван  Павлов
       <pavia00@gmail.com> и Kirill Rekhov <krekhov.dev@gmail.com>

       Этот  перевод является свободной программной документацией; он распространяется на условиях общедоступной
       лицензии GNU (GNU General Public License - GPL, https://www.gnu.org/licenses/gpl-3.0.html  версии  3  или
       более поздней) в отношении авторского права, но БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ.

       Если  вы  обнаружите какие-либо ошибки в переводе этой страницы руководства, пожалуйста, сообщите об этом
       разработчику(ам)  по  его(их)  адресу(ам)  электронной  почты  или  по   адресу   списка рассылки русских
       переводчиков.

Справочные страницы Linux 6.9.1                   2 мая 2024 г.                                  pthread_exit(3)