1.pthread_join():
阻塞调用线程:调用 pthread_join 的线程(即当前线程)将被阻塞,直到指定的线程结束。
2.pthread_detach();
分离一个线程:当一个线程被分离后,它就不能被其它线程通过 pthread_join 来等待其终止了。分离线程在终止时会自动释放其资源,而不需要其它线程进行处理。
调用 pthread_join 来等待线程结束的主要原因:
1.资源回收:当一个线程结束时,它的栈和其它资源(如线程特有的数据)需要被清理。如果线程是分离的(通过 pthread_detach 设置),那么这些资源会在线程结束时自动释放。然而,对于非分离的线程,如果没有其它线程调用 pthread_join 来等待它,那么这些资源可能不会释放,导致资源泄漏。(这些没有释放的线程会变成"僵尸线程")。