注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

mie

 
 
 

日志

 
 

pthread_join SIGSEGV 段错误  

2010-08-04 14:58:33|  分类: linux、FreeBSD等 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

多线程程序。主线程发送退出指令,然后调用pthread_join等待其他线程退出。但是,在等待的瞬间其他部分线程退出,此时调用pthread_join导致段错误!

pthread_join这个函数真够垃圾的,连这点判断能力都没有。难道要这样:先枚举所有线程,然后看线程是否存在,再pthread_join?

 

http://hi.baidu.com/jgh110/blog/item/0e6ed913d2972e0e5aaf53fd.html

这里说使用pthread_kill,试了一下,一样的效果。

于是,加入自己的判断,if(*(int *)pthread_handle==0),大部分情况下正常,极少数情况下还是会出现段错误。

再加入一重判断:if(pthread_kill(pthread_handle, 1)!=0), 结果是SIGHUP错误。

 

没辙,加了一个死循环:

while(!exited)

{

usleep(50000);

}

 

还是自己写的代码用起来比较放心。

 

By:zhanyonhu

  评论这张
 
阅读(1808)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2016