请问:pthread_detach()和pthread_join()的具体含义是什么?

看帮助还是不太明白,能不能举个例子呢?谢谢!

pthread_join()是用来判断所要求的线程有没有退出。通常和pthread_cancle()共用。

pthread_cancle(tid,…);
pthread_join(tid, …);

用来确保(同步)“tid”完全退出。

pthread_detach() 过的线程就没办法pthread_join()了。

pthread_cancle和pthread_exit有区别吗?

cancel() 是cancel别的线程(把别人干掉),exit()是自己退出(自杀)。:slight_smile:

pthread_detach是设置线程分离状态,在这个状态下,你的主线程不用回首子线程资源,比如你这样
while(1)
{
pthread_create();//线程函数什么事情都可以不做
}
看看能创建都少个线程,基本上运行与会儿,你的进程就崩溃了,但是如果设置了pthread_detach属性,意思就是说子线程的运行状态不用主线程操心,由init进程最后回收资源,在这个情况下
while(1)
{
pthread_detach();
pthread_create();//线程函数什么事情都可以不做(同上)
}
除非你机器出问题,否则你的进程是不会崩溃的。 当然还要说说pthread_join,这个函数就是用来回收线程资源的,但是有个缺点就是需要线程ID并且是阻塞的方式等待线程,如果子线程是一个死循环的话,那你的主线程就不可能往下面的代码跑了,局限性很大。