windows线程挂起与唤醒,SuspendThread与ResumeThread的一些相关问题
2014-03-25 20:24
405 查看
总结一下,创建进程有好多种方法,
CreateThread:这个函数WIN32api函数,最好不要用这个函数,会造成一些错误(原因还是很深刻的)
AfxBeginThread:这个方法是MFC特有的创建线程的方法,是MFC对CreateThread函数的封装,改善了CreateThread的一些不足,并且返回的是一个
CWinThread *的类型。
_beginthreadex:是c/c++运行库,也是对CreateThread函数的封装,避免了其的不足,返回值也可以转换为HANDLE类型。我们创建线程时尽量采用AfxBeginThread与
_beginthreadex函数。
当我们将,CREATE_SUSPENDED传入到AfxBeginThread函数时,可以让线程在创建时处于挂起状态,他的CPU占用权交出,等待被唤醒。
也可以在运行时使用SuspendThread函数来挂起线程,然后使用ResumeThread函数来唤醒线程,值得注意的是,可以使用SupendThread多次挂起线程,线程有一个挂起计数器,初始值是0,挂起一次(含初始挂起),计数器就自增1,ResumeThread以此就自减1,当此计数器为0的时候,线程就被唤醒开始从挂起的地方开始执行。
CreateThread:这个函数WIN32api函数,最好不要用这个函数,会造成一些错误(原因还是很深刻的)
AfxBeginThread:这个方法是MFC特有的创建线程的方法,是MFC对CreateThread函数的封装,改善了CreateThread的一些不足,并且返回的是一个
CWinThread *的类型。
_beginthreadex:是c/c++运行库,也是对CreateThread函数的封装,避免了其的不足,返回值也可以转换为HANDLE类型。我们创建线程时尽量采用AfxBeginThread与
_beginthreadex函数。
当我们将,CREATE_SUSPENDED传入到AfxBeginThread函数时,可以让线程在创建时处于挂起状态,他的CPU占用权交出,等待被唤醒。
也可以在运行时使用SuspendThread函数来挂起线程,然后使用ResumeThread函数来唤醒线程,值得注意的是,可以使用SupendThread多次挂起线程,线程有一个挂起计数器,初始值是0,挂起一次(含初始挂起),计数器就自增1,ResumeThread以此就自减1,当此计数器为0的时候,线程就被唤醒开始从挂起的地方开始执行。
相关文章推荐
- 一些线程相关的问题
- 线程相关的一些问题
- Windows控制台中一些相关参数设置(解决控制台乱码等问题)
- Java windows项目迁移到linux上,遇到一些跟路径相关的问题
- 线程的挂起,唤醒和终止
- Windows下一些奇怪安装问题的解决
- 线程和线程池的相关问题记录
- Windows线程间SendMessage产生的死锁问题
- Windows安装MySQL 5.7.19及相关问题处理
- 关于在部署KMS过程中的一些问题和总结(windows 7)
- 浅析Windows安全相关的一些概念
- Windows32编程一些问题
- 进程和线程的一些问题
- windows下揪出java程序占用cpu很高的线程 并找到问题代码 死循环线程代码
- localhost的一些相关问题
- win10_x64更新错误解决: 安装一些更新时出现问题,但我们稍后会重试。如果持续出现这些问题,并且你想要搜索Web或联系支持人员以获取相关信息,以下信息可能会对你有帮助:
- 解决Windows 程序界面闪烁问题的一些经验
- Windows远程管理中相关问题的解决 推荐
- 克隆windows的面临的一些问题~
- (一)在Windows下编译扩展OpenCV 3.1.0 + opencv_contrib 及一些问题