![]() |
![]() |
![]() |
Block until a thread terminates
#include <sys/neutrino.h> int ThreadJoin( int tid, void** status ); int ThreadJoin_r( int tid, void** status );
libc
The ThreadJoin() and ThreadJoin_r() functions are identical except in the way they indicate errors. See the Returns section for details.
These kernel calls block until the thread specified by tid terminates. If status isn't NULL it saves the thread's exit status into the area pointed to by status. If the thread tid has already terminated, then ThreadJoin() immediately returns with success and the status if requested.
When ThreadJoin() returns successfully, the target thread has been successfully terminated. Until this point the thread ID tid won't be reused and a small kernel resource will be retained (a thread object).
You can't join a thread which is detached (see ThreadCreate() and ThreadDetach()).
The target thread must be joinable. Multiple pthread_join(), pthread_timedjoin(), ThreadJoin(), and ThreadJoin_r() calls on the same target thread aren't allowed.
The only difference between these functions is the way they indicate errors:
Safety: | |
---|---|
Cancellation point | Yes |
Interrupt handler | No |
Signal handler | Yes |
Thread | Yes |
![]() |
![]() |
![]() |