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

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

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

БИБЛИОТЕКА

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

ИСТОРИЯ

       POSIX.1-2001.

ПРИМЕЧАНИЯ

       После  успешного  выполнения 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>,       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_join(3)