12.3.5 回收已终止线程的资源
12.3.5 回收已终止线程的资源
线程通过调用 pthread_join 函数等待其他线程终止。
#include <pthread.h>
int pthread_join(pthread_t tid, void **thread_return);若成功则返回 0,若出错则为非零。
pthread_join 函数会阻塞,直到线程 tid 终止,将线程例程返回的通用(void *)指针赋值为 thread_return 指向的位置,然后回收已终止线程占用的所有内存资源。
注意,和 Linux 的 wait 函数不同,pthread_join 函数只能等待一个指定的线程终止。没有办法让 pthread_wait 等待任意一个线程终止。这使得代码更加复杂,因为它迫使我们去使用其他一些不那么直观的机制来检测进程的终止。实际上,Stevens 在 [110] 中就很有说服力地论证了这是规范中的一个错误。