.\" -*- coding: UTF-8 -*- '\" t .\" Copyright (c) 2008 Linux Foundation, written by Michael Kerrisk .\" .\" .\" SPDX-License-Identifier: Linux-man-pages-copyleft .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH pthread_join 3 "31 октября 2023 г." "Linux man\-pages 6.06" .SH ИМЯ pthread_join \- присоединение к завершённой нити .SH LIBRARY POSIX threads library (\fIlibpthread\fP, \fI\-lpthread\fP) .SH СИНТАКСИС .nf \fB#include \fP .P \fBint pthread_join(pthread_t \fP\fIthread\fP\fB, void **\fP\fIretval\fP\fB);\fP .fi .SH ОПИСАНИЕ Функция \fBpthread_join\fP() ждёт завершения нити, указанной в \fIthread\fP. Если нить уже завершила работу, то \fBpthread_join\fP() завершается сразу. Нить, задаваемая в \fIthread\fP, должна позволять присоединение. .P Если \fIretval\fP не равно NULL, то \fBpthread_join\fP() копирует код выхода нити назначения (т. е., значение, которое нить назначения передала через \fBpthread_exit\fP(3)) в расположение по указателю \fIretval\fP. Если нить назначения была отменена, то в расположение по указателю \fIretval\fP помещается значение \fBPTHREAD_CANCELED\fP. .P Если к одной нити одновременно пытаются присоединиться несколько нитей, то результат не определён. Если нити вызвавшая \fBpthread_join\fP(), отменяется, то нить назначения остаётся доступной для присоединения (т. е., не будет отсоединена). .SH "ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ" При успешном выполнении \fBpthread_join\fP() возвращается 0; при ошибке возвращается номер ошибки. .SH ОШИБКИ .TP \fBEDEADLK\fP .\" The following verified by testing on glibc 2.8/NPTL: .\" The following verified by testing on glibc 2.8/NPTL: Обнаружена взаимная блокировка (например, когда две нити пытаются присоединиться друг к другу); или в \fIthread\fP указана вызывающая нить. .TP \fBEINVAL\fP Нить \fIthread\fP не является присоединяемой. .TP \fBEINVAL\fP .\" POSIX.1-2001 does not specify this error case. Другая нить уже ждёт присоединения к этой нити. .TP \fBESRCH\fP Нить с идентификатором \fIthread\fP не найдена. .SH АТРИБУТЫ Описание терминов данного раздела смотрите в \fBattributes\fP(7). .TS allbox; lbx lb lb l l l. Интерфейс Атрибут Значение T{ .na .nh \fBpthread_join\fP() T} Безвредность в нитях MT\-Safe .TE .SH СТАНДАРТЫ POSIX.1\-2008. .SH ИСТОРИЯ POSIX.1\-2001. .SH ЗАМЕЧАНИЯ После успешного выполнения \fBpthread_join\fP() вызывающему гарантируется, что целевая нить завершила работу. Вызывающий теперь может сделать нужные после завершения нити операции по очистке (например, освободить память или другие ресурсы, которые использовались целевой нитью). .P Присоединение к нити, из которой уже был получен результат присоединения, приводит к непредсказуемым последствиям. .P Ошибка присоединения к нити, доступной для присоединения (т. е., не отсоединённой), создаёт «нить\-зомби». Лучше их избегать, так как нить\-зомби потребляет некоторые системные ресурсы, и когда накапливается много нитей\-зомби становится невозможно создание новых нитей (или процессов). .P Аналога \fIwaitpid(\-1,\ &status,\ 0)\fP в pthreads не существует, то есть присоединиться к любой завершившейся нити». Если вы уверены, что вам нужна такая возможность, то, вероятно, стоит пересмотреть проект приложения. .P Все нити в процессе равноправны: любая нить может присоединиться к любой другой нити процесса. .SH ПРИМЕРЫ Смотрите \fBpthread_create\fP(3). .SH "СМ. ТАКЖЕ" \fBpthread_cancel\fP(3), \fBpthread_create\fP(3), \fBpthread_detach\fP(3), \fBpthread_exit\fP(3), \fBpthread_tryjoin_np\fP(3), \fBpthreads\fP(7) .PP .SH ПЕРЕВОД Русский перевод этой страницы руководства был сделан Alexey, Azamat Hackimov , kogamatranslator49 , Kogan, Max Is , Yuri Kozlov и Иван Павлов . .PP Этот перевод является бесплатной документацией; прочитайте .UR https://www.gnu.org/licenses/gpl-3.0.html Стандартную общественную лицензию GNU версии 3 .UE или более позднюю, чтобы узнать об условиях авторского права. Мы не несем НИКАКОЙ ОТВЕТСТВЕННОСТИ. .PP Если вы обнаружите ошибки в переводе этой страницы руководства, пожалуйста, отправьте электронное письмо на .MT man-pages-ru-talks@lists.sourceforge.net .ME .