Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2342477
  • 博文数量: 816
  • 博客积分: 10000
  • 博客等级: 上将
  • 技术积分: 5010
  • 用 户 组: 普通用户
  • 注册时间: 2008-12-17 17:57
文章分类

全部博文(816)

文章存档

2011年(1)

2008年(815)

分类:

2008-12-17 18:00:21

我认为最好的情况应该是设置全局变量作为标志,线程检查到这些标志就结束执行,这样做的好处是
线程的结束由线程自己检测到而决定的,时能够释放出所有有线程分配的资源。
如果线程里面有循环,在循环里面增加一个if(检查到标志){跳转到线程结束位置,线程结束};
如果线程里面有等待过程,例如 WaitForSingleObject 和 WaitForMultipleObjects 都要做成
WaitForMultipleObjects,并且增加一个结束事件同时等待,
当启动这个结束事件,WaitForMultipleObjects 结束等待,发现是由结束事件产生的,就结束线程的执行。
结束线程就是当函数自然结束,线程就结束了,不用调 _endthread 和 ExitThread,系统内部会给你执行的。

如果线程里面没有分配任何资源,或者资源由线程外部分配,可以把线程的句柄放到全局变量,
需要结束时通过句柄杀死线程。我不喜欢这种做法。因为由 _endthread 和 ExitThread 强制结束线程,
线程里面分配的内存无法释放,线程里面类的对象也不能调用析构函数,引起内存泄漏和资源丢失。

没有哪本书能够清楚介绍这些问题,都是我参考帮助,并且试验和摸索出来的,都是我的个人观点。

--------------------next---------------------

阅读(1330) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~