判断线程已经结束的方法
写了一个中间件,提供了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仍然不为空。