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

ИМЯ

       pthread_join - присоединение к завершённой нити

LIBRARY

       POSIX threads library (libpthread, -lpthread)

СИНТАКСИС

       #include <pthread.h>

       int pthread_join(pthread_t thread, void **retval);

ОПИСАНИЕ

       Функция  pthread_join()  ждёт  завершения  нити,  указанной  в thread. Если нить уже завершила работу, то
       pthread_join() завершается сразу. Нить, задаваемая в thread, должна позволять присоединение.

       Если retval не равно NULL, то pthread_join() копирует  код  выхода  нити  назначения  (т.  е.,  значение,
       которое  нить  назначения  передала через pthread_exit(3)) в расположение по указателю retval.  Если нить
       назначения была отменена, то в расположение по указателю retval помещается значение PTHREAD_CANCELED.

       Если к одной нити одновременно пытаются присоединиться несколько нитей, то результат не  определён.  Если
       нити  вызвавшая  pthread_join(),  отменяется, то нить назначения остаётся доступной для присоединения (т.
       е., не будет отсоединена).

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

       При успешном выполнении pthread_join() возвращается 0; при ошибке возвращается номер ошибки.

ОШИБКИ

       EDEADLK
              Обнаружена взаимная блокировка (например, когда две нити пытаются присоединиться  друг  к  другу);
              или в thread указана вызывающая нить.

       EINVAL Нить thread не является присоединяемой.

       EINVAL Другая нить уже ждёт присоединения к этой нити.

       ESRCH  Нить с идентификатором thread не найдена.

АТРИБУТЫ

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

СТАНДАРТЫ

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

ЗАМЕЧАНИЯ

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

       Присоединение  к  нити,  из  которой  уже был получен результат присоединения, приводит к непредсказуемым
       последствиям.

       Ошибка присоединения к нити, доступной для присоединения (т. е., не отсоединённой), создаёт «нить-зомби».
       Лучше их избегать, так как нить-зомби потребляет некоторые системные ресурсы, и когда накапливается много
       нитей-зомби становится невозможно создание новых нитей (или процессов).

       Аналога waitpid(-1, &status, 0) в pthreads не существует, то есть присоединиться  к  любой  завершившейся
       нити».  Если  вы  уверены,  что  вам  нужна  такая  возможность,  то, вероятно, стоит пересмотреть проект
       приложения.

       Все нити в процессе равноправны: любая нить может присоединиться к любой другой нити процесса.

ПРИМЕРЫ

       Смотрите pthread_create(3).

СМ. ТАКЖЕ

       pthread_cancel(3),   pthread_create(3),   pthread_detach(3),   pthread_exit(3),    pthread_tryjoin_np(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_join(3)