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

中文QNX 讨论: 欢迎大家灌水,讨论有关QNX 问题。

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

帖子feifei » 周四 11月 24, 2005 11:26 am

看帮助还是不太明白,能不能举个例子呢?谢谢!
feifei
Senior Member
 
帖子: 74
注册: 周一 5月 23, 2005 9:09 pm

帖子xtang » 周六 11月 26, 2005 12:00 pm

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

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

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

pthread_detach() 过的线程就没办法pthread_join()了。
xtang
Moderator
 
帖子: 1815
注册: 周五 9月 12, 2003 4:14 am
地址: China

Re:

帖子harrygood5531 » 周六 4月 21, 2012 1:22 pm

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

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

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

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



pthread_cancle和pthread_exit有区别吗?
harrygood5531
New Member
 
帖子: 8
注册: 周五 3月 30, 2012 11:13 am

Re: Re:

帖子xtang » 周二 4月 24, 2012 9:23 pm

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

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

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

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



pthread_cancle和pthread_exit有区别吗?


cancel() 是cancel别的线程(把别人干掉),exit()是自己退出(自杀)。:)
xtang
Moderator
 
帖子: 1815
注册: 周五 9月 12, 2003 4:14 am
地址: China

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

帖子svenzhang » 周四 3月 19, 2015 10:21 am

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


回到 四海同心QNX论坛

在线用户

正在浏览此版面的用户:没有注册用户 和 5 位游客

cron