分页: 1 / 1

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

帖子发表于 : 周四 11月 24, 2005 11:26 am
feifei
看帮助还是不太明白,能不能举个例子呢?谢谢!

帖子发表于 : 周六 11月 26, 2005 12:00 pm
xtang
pthread_join()是用来判断所要求的线程有没有退出。通常和pthread_cancle()共用。

pthread_cancle(tid,...);
pthread_join(tid, ...);

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

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

Re:

帖子发表于 : 周六 4月 21, 2012 1:22 pm
harrygood5531
xtang 写道:pthread_join()是用来判断所要求的线程有没有退出。通常和pthread_cancle()共用。

pthread_cancle(tid,...);
pthread_join(tid, ...);

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

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



pthread_cancle和pthread_exit有区别吗?

Re: Re:

帖子发表于 : 周二 4月 24, 2012 9:23 pm
xtang
harrygood5531 写道:
xtang 写道:pthread_join()是用来判断所要求的线程有没有退出。通常和pthread_cancle()共用。

pthread_cancle(tid,...);
pthread_join(tid, ...);

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

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



pthread_cancle和pthread_exit有区别吗?


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

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

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