pthread_join(3) Library Functions Manual pthread_join(3)

pthread_join - se unește cu un fir terminat

Biblioteca de fire de execuție POSIX (libpthread, -lpthread)

#include <pthread.h>
int pthread_join(pthread_t thread, void **retval);

Funcția pthread_join() așteaptă ca firul specificat de thread să se încheie. În cazul în care firul respectiv s-a încheiat deja, atunci pthread_join() returnează imediat. Firul specificat de thread trebuie să poată fi asociat.

Dacă retval nu este NULL, atunci pthread_join() copiază starea de ieșire a firului țintă (adică valoarea pe care firul țintă a furnizat-o lui pthread_exit(3)) în locația indicată de retval. În cazul în care firul țintă a fost anulat, atunci PTHREAD_CANCELED este plasat în locația indicată de retval.

În cazul în care mai multe fire de execuție încearcă simultan să se unească cu același fir de execuție, rezultatele sunt nedefinite. În cazul în care firul care apelează pthread_join() este anulat, atunci firul țintă va continua să poată fi unit (adică nu va fi detașat).

În caz de succes, pthread_join() returnează 0; în caz de eroare, returnează un număr de eroare.

A fost detectat un impas (de exemplu, două fire de execuție au încercat să se unească una cu cealaltă); sau thread specifică firul de execuție apelant.
thread nu este un fir de execuție care poate fi atașat.
Un alt fir de execuție așteaptă deja să se unească cu acest fir.
Nu a putut fi găsit niciun fir de execuție cu identificatorul thread.

Pentru o explicație a termenilor folosiți în această secțiune, a se vedea attributes(7).

Interfață Atribut Valoare
pthread_join() Siguranța firelor MT-Safe

POSIX.1-2008.

POSIX.1-2001.

După un apel reușit la pthread_join(), apelantului i se garantează că firul țintă s-a încheiat. Apelantul poate alege apoi să efectueze orice operațiune de curățare necesară după terminarea firului (de exemplu, eliberarea memoriei sau a altor resurse care au fost alocate firului țintă).

Alăturarea cu un fir care a fost alăturat anterior are ca rezultat un comportament nedefinit.

Dacă nu se reușește o îmbinare cu un fir care poate fi îmbinat (adică unul care nu este detașat), se produce un „fir zombi”. Evitați să faceți acest lucru, deoarece fiecare fir zombi consumă anumite resurse de sistem, iar atunci când se vor acumula suficiente fire zombi, nu va mai fi posibilă crearea de noi fire (sau procese).

Nu există un analog «pthreads» al waitpid(-1, &status, 0), adică „unirea cu orice fir terminat”. Dacă credeți că aveți nevoie de această funcționalitate, probabil că trebuie să vă regândiți proiectarea aplicației.

Toate firele de execuție dintr-un proces sunt similare: orice fir de execuție se poate alătura oricărui alt fir de execuție din proces.

A se vedea pthread_create(3).

pthread_cancel(3), pthread_create(3), pthread_detach(3), pthread_exit(3), pthread_tryjoin_np(3), pthreads(7)

Traducerea în limba română a acestui manual a fost făcută de Remus-Gabriel Chelu <remusgabriel.chelu@disroot.org>

Această traducere este documentație gratuită; citiți Licența publică generală GNU Versiunea 3 sau o versiune ulterioară cu privire la condiții privind drepturile de autor. NU se asumă NICIO RESPONSABILITATE.

Dacă găsiți erori în traducerea acestui manual, vă rugăm să trimiteți un e-mail la translation-team-ro@lists.sourceforge.net.

31 octombrie 2023 Pagini de manual de Linux 6.06