请教pthread_detach函数的问题

A282409975 2011-09-28 07:47:28
大家好:
我刚开始学linux 的线程编程,在看一个程序时,看到如下的代码,不明白为什么要在pthread_join后面再次调用pthread_detach函数,请各位高手给解答一下,谢谢!
int AviMngExit()
{
int ret = 0;
AVI_DBG("Enter %s\n", __func__);
pSysinfo = NULL;
pthread_mutex_lock(&gAviMutex);
gAviState |= AVI_THR_EXIT;
pthread_mutex_unlock(&gAviMutex);
pthread_cond_signal(&gAviRunCond);
AVI_DBG("Wait AVI manager done\n");
pthread_join(gAviMngThr, (void **)&ret);//这里为什么即使用pthread_join又使用pthread_detach
pthread_detach(gAviMngThr);
ret |= pthread_mutex_destroy(&gAviConMutex);
ret |= pthread_mutex_destroy(&gAviMutex);
if(DestroySem(hSdFileSem))
ret |= -1;
else
hSdFileSem = NULL;
AVI_DBG("Leave %s\n", __func__);
return ret;
}
...全文
247 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq120848369 2011-10-01
  • 打赏
  • 举报
回复
因为Join是阻塞的,慢速系统调用被信号中断的话会返回,既然错过Join就detach.
_了凡_ 2011-10-01
  • 打赏
  • 举报
回复
是不是这样,虽然你调用pthread_join去连接这个线程(也就是等待其死亡),但如果失败呢,
所以就干脆detach它,让其自生自灭了呗……

23,131

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧