Man page - pthread_join(3)

Packages contains this manual

Available languages:

en fr ja ru ro

Manual

pthread_join

НАИМЕНОВАНИЕ
БИБЛИОТЕКА
ОБЗОР
ОПИСАНИЕ
ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
ОШИБКИ
АТРИБУТЫ
СТАНДАРТЫ
ИСТОРИЯ
ПРИМЕЧАНИЯ
ПРИМЕРЫ
СМОТРИТЕ ТАКЖЕ
ПЕРЕВОД

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

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).

Image grohtml-612856-1.png

СТАНДАРТЫ

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 или более поздней) в отношении авторского права, но БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ.

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