Provided by: manpages-ru-dev_4.26.0-1_all 

НАИМЕНОВАНИЕ
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)