判断线程已经结束的方法

colgate2000 2009-12-04 10:21:25
写了一个中间件,提供了2个接口函数---都是可重入函数。
handle = startXXX()---启动一个线程,并返回线程handle
stopXXX(handle)---根据传入的handle结束一个线程,释放相关内存空间

假设有这样一段代码
main()
{
handle1 = startXXX();//1
handle2 = handle1;//2
stopXXX(handle2);//3
handle2 = handle1;//4
stopXXX(handle2);//5
}

问题点:
第2次调用stopXXX(),程序会崩溃。
原因:
第1次调用stopXXX()时,handle1对应的线程已经被删除了。再次试图释放handle1对应的线程出错。

想在stopXXX()中追加判断handle所对应的线程是否已经退出的处理。该怎么做呢?

已经试过在stopXXX()中将handle指针释放的方法,第3步的时候,会将handle2清除为NULL,但是handle1仍然不为空。

...全文
165 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
colgate2000 2009-12-04
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 chxy85 的回复:]
为什么
“第2次调用stopXXX(),程序会崩溃”

不解
[/Quote]
第一次调用的时候,已经将进程的地址释放了。第2次在调用的时候,使用了非法的地址当然就会崩溃了。
chxy85 2009-12-04
  • 打赏
  • 举报
回复
为什么
“第2次调用stopXXX(),程序会崩溃”

不解

3,881

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 其它技术问题
社区管理员
  • 其它技术问题社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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