线程的停止与回收
来源:互联网 发布:撑压划线源码 编辑:程序博客网 时间:2024/04/29 09:35
A01-04 线程的停止和回收
线程停止:当return语句被执行时,表示线程正常退出。
int Routine(){ printf("do something\n"); return 0; //线程的主函数退出}
return语句被执行,Routune()返回,线程退出
异常退出:
①当主线程退出的时候,所以的子线程都会退出
②这种异常退出会造成数据的不完整,破坏数据。应尽量避免这种情况
③如果需要异常终止,应该先保存数据
如何让线程正常终止
①设置标识量(在类中添加bool m_quitflag变量,用来标识线程的状态)
②等待线程的退出:
MyTask task;task.m_quitflag = false; //将状态设置为falsetask.Run(); getchar(); //按下“回车”,退出task.m_quitflag = true; //将状态设置为trueOS_thread::Join(&task); //等待目标线程退出
Join()函数作用:①等待目标线程退出
②回收这个线程的相关资源(因为线程的个数是有限的)
③注意:线程是不能自己回收自己的,(在类中调用OS_Thread::Join(this)是不可行的)如下:
将m_quitflag封装进类中(防止破坏了封装性)如下:
Join的调用位置:不能只看字面上的位置,而要从运行时的角度来看待问题
注:关于博客中的第三方库"osapi",可以通过访问http://www.afanihao.cn的共享代码模块中获
详情请参见http://www.afanihao.cn/的应用篇
0 0
- 线程的停止与回收
- 线程的终止与回收
- 线程服务的停止与启动
- 线程服务的停止与启动
- 线程状态与停止
- Java 线程的停止
- 线程的停止
- 线程的创建-停止
- java 线程的停止
- 线程的停止
- 停止线程的方式
- 线程的停止
- 线程的停止
- 线程的停止
- python3线程启动与停止
- 线程资源的回收
- 线程资源的回收
- 关于android Handler进行线程处理消息队列与线程队列线程无法停止的问题
- C#取整函数Math.Round、Math.Ceiling和Math.Floor
- 工作选取
- 结构体内存对齐详解
- Android自定义时间轴
- robot framework中点击页面某个元素的三种方法
- 线程的停止与回收
- 定时程序发布以后,修改App.cofig 没有生效?
- APP安全报告第五期:盗版天气应用程序肆意窃取银行用户信息,你中招了吗?
- 华为oj初级 24点游戏算法
- QT多重定义,忽略特定的库
- 58. Length of Last Word
- bandwitdthd 监控
- 2016年智能机器人系列报告系列
- 清理ubuntu下boot分区的常用命令