pthread_cancel目标线程没有销毁的问题

zhgure 2019-07-16 09:30:59
首先目标线程里面是一个while(1)循环,里面一个select,如下:
while (1)
{
......
ret = select(...);
......
}

当主线程调用pthread_cancel(thread_id)后,pthread_join (thread_id, NULL);等待。
此时使用gdb调试查看,info thread查看目标线程还在,进入目标线程bt查看,堆栈已经释放了。
也就是线程没有完全释放掉,导致pthread_join阻塞。

求大神指导。多谢!
...全文
252 1 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhgure 2019-07-17
  • 打赏
  • 举报
回复
已经解决了,不使用pthread_cancel,而是通过一个线程参数控制线程是否结束。
另外注意,如果目标线程调用了pthread_exit(0),则主线程中调用pthread_join (thread_id, NULL);就无法正常返回。

23,217

社区成员

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

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