一:pthread_join()
(1)pthread_join()即是子线程合入主线程,主线程阻塞等待子线程结束,然后回收子线程资源。
(2)函数说明
1)头文件 : #include <pthread.h>
2)函数定义: int pthread_join(pthread_t thread, void **retval);
3)描述 :pthread_join()函数,以阻塞的方式等待thread指定的线程结束。当函数返回时,被等待线程的资源被收回。如果线程已经结束,那么该函数会立即返回。并且thread指定的线程必须是joinable的。
4)参数 :thread: 线程标识符,即线程ID,标识唯一线程。retval: 用户定义的指针,用来存储被等待线程的返回值。
5)返回值 : 0代表成功。 失败,返回的则是错误号。
二:pthread_detach()
(1)pthread_detach()即主线程与子线程分离,子线程结束后,资源自动回收。
(2)函数说明
1)函数原型:int pthread_detach(pthread_t tid);
2)功能:pthread_join()函数的替代函数,可回收创建时detachstate属性设置为PTHREAD_CREATE_JOINABLE的线程的存储空间。该函数不会阻塞父线程。pthread_join()函数用于只是应用程序在线程tid终止时回收其存储空间。如果tid尚未终止,pthread_detach()不会终止该线程。当然pthread_detach(pthread_self())也是可以得
3)头文件:#include <pthread.h> pthread非linux系统的默认库, 需手动链接-线程库 -lpthread
4)参数:tid:线程标识符
5)返回值:pthread_detach() 在调用成功完成之后返回零。其他任何返回值都表示出现了错误。如果检测到以下任一情况,pthread_detach()将失败并返回相应的值。
EINVAL:tid是分离线程
ESRCH:tid不是当前进程中有效的为分离线程