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

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