windows多线程基础(3):如何正确结束线程
来源:互联网 发布:linq实战源码 编辑:程序博客网 时间:2024/05/21 10:22
言归正传,线程创建后,如何终止呢?
若要终止线程的运行,可以使用下面的方法:
- 线程函数返回(最好使用这种方法)
- 通过调用ExitThread函数,线程将自行撤销(最好不要使用这种方法)
- 通过调用TerminateThread函数(应该避免使用这种方法)
- 包含线程的进程终止运行(应该避免使用这种方法)
1. 线程函数return
唯一能够确保所有的线程资源能被正确清除的唯一办法。
- 线程中所有的C++对象均能通过各自的撤销函数正确的撤销
- 释放线程的栈内存
- 将线程的退出代码设置为线程函数的返回值
- 线程内核对象的使用计数递减
2. ExitThread函数
强制线程终止进行。
- 操作系统资源能够释放
- C++资源将不被撤销(基于这个原因,最好从线程函数返回)
3. TerminateThread函数
竟然连线程的栈也不释放。以防其他线程对该线程堆栈数据有引用,若是撤销栈内存,其他线程会发生访问违规的问题。这样的话,其他线程仍然可以很好的继续运行。
4. 在进程终止运行时撤销线程
容器都没了,线程还能有么。
5. 线程终止运行时发生的操作
- 线程拥有的所有用户对象均被释放
- 线程的退出代码从STILL_ACTIVE被赋值
- 线程的内核对象变为已通知
- 线程的内核对象的使用计数被递减1
- 如线程是最后一个活动线程,则进程将被终止
讲了这么多,貌似只用过return ExitCode的方法。
还是没提_beginthreadex函数,这个函数真的很有意思,学起来爱不释手,有种豁然开朗的感觉,不过还是明天继续吧。
0 0
- windows多线程基础(3):如何正确结束线程
- 如何正确结束Java线程
- 线程池 多线程运行结束后 如何关闭? ExecutorService的正确关闭方法
- C++多线程实例(线程的建立—调度—正确结束)
- Windows下如何安全结束线程
- java多线程开发 如何正确关闭线程
- 线程的正确结束方式
- 主线程等待子线程结束(多线程结束标识)
- 多线程之结束线程生命周期(四)
- windows多线程基础(2):如何创建多线程CreateThread
- windows多线程基础(4):关于线程更多知识
- 判断多线程如何结束
- 如何结束线程?
- 如何结束线程
- 如何结束线程运行
- 如何结束一个线程
- Android 如何结束线程
- 如何结束一个线程
- /dev/random和/dev/urandom的一点备忘
- android事件分发机制
- 如何检测网线是否插好
- ANDROID L——Material Design详解(UI控件)
- Atitit.软件仪表盘(7)--温度监测子系统--电脑重要部件温度与监控and警报
- windows多线程基础(3):如何正确结束线程
- linux上获取北京时间的一个方法(2017.1.5更新)
- Spring学习(一)------Spring简介
- cocos2dx 3.3 主场景
- onclicklistener cannot be resolved to a type
- TextView 在xml文件中的解释
- mysql存储过程和函数使用
- Linux内核学习四库全书
- 黑马程序员---Java语言基础3