Заблокировать до завершения потока
#include <sys/neutrino.h>int ThreadJoin( int tid,void **status );int ThreadJoin_r( int tid,void **status );
libc
Вызовы ядра ThreadJoin() и ThreadJoin_r() блокируют до тех пор, пока поток с таким tid завершается. Если status не равен NULL
, функции сохраняют статус завершения потока по указанному в status адресу. Если поток tid уже завершился, функции немедленно возвращаются с успешным кодом и статусом, если последний был запрошен.
Функции идентичны во всём, кроме способа сообщения об ошибках.
Когда ThreadJoin() успешно завершается, целевой поток уже успешно уничтожен. До тех пор его tid не переиспользуется и немного ресурсов ядра (объект потока) сохраняется.
Нельзя присоединить поток, который был отвязан (см. ThreadCreate() и ThreadDetach()).
Целевой поток должен быть присоединяем. Несколько вызовов pthread_join(), pthread_timedjoin(), ThreadJoin() и ThreadJoin_r() для одного потока недопустимы.
-1
, код ошибки записывается в errno. Любое другое возвращенное значение считается успешным завершением.EOK
возвращается при успешном завершении. Функция НЕ устанавливает errno. При возникновении ошибки функция возвращает один из представленных ниже кодов.
ЗОСРВ «Нейтрино»
pthread_join(), pthread_timedjoin(), ThreadCreate(), ThreadDetach()
Предыдущий раздел: Описание API системной библиотеки