初始化一个线程

HANDLE hThread;
DWORD threadId;
hThread = CreateThread(NULL,
0,
ThreadFunc,
0,
CREATE_SUSPENDED,
&threadId);
SetThreadPriority(hThread, THREAD_PRIORITY_IDLE); 

一旦线程设定妥当,你可以调用Resum eThread() 开始执行:

DWORD ResumeThread(
HANDLE hThread
);
参数
hThread  欲被再次执行的线程。
返回值
如果函数成功,则传回线程的前一个挂起次数。如果失败,则传回0xFFFFFFFF。GetLastError() 可以获得更详细的信息。

挂起(suspending)一个线程

这个函数允许调用端指定一个线程睡眠(挂起)。直到又有人调用了Resum eThread(),线程才会醒来。因此,睡眠中的线程不可能唤醒自己。

DWORD SuspendThread(
HANDLE hThread
);
参数
hThread  欲被挂起的线程。
返回值
如果函数成功,则传回线程目前的挂起次数。如果失败,则传回0xFFFFFFFF。GetLastError() 可以获得更详细的信息。

SuspendThread() 是另一个可能会潜在引发问题的函数。考虑一下这种情况:一个进程拥有三个线程A,B,C。线程C正在某个critical  section 内,而线程B正在等它出来。然后,线程A挂起了线程C。在这种情况下,线程C将永远不会离开critical  section,而线程B也就相当于进入了死锁状态。

SuspendThread() 的最大用途就是用来协助撰写调试器。调试器允许在程序员的控制之下,启动或停止任何一个线程。

文字版电子书-----请点击这里

《Win32多线程程序设计》(11)---ResumeThread()SuspendThread()相关推荐

  1. 深入浅出Win32多线程程序设计

    引言 从单进程单线程到多进程多线程是操作系统发展的一种必然趋势,当年的DOS系统属于单任务操作系统,最优秀的成员员也只能通过驻留内存的方式实现所谓的"多任务",而如今的Win32操 ...

  2. 《win32多线程程序设计》学习笔记

    写于2016年6月24日 " vim:fen:fdm=marker:fmr={{{,}}}:fdl=0:fdc=1:ts=2:sw=2:sts=2 "第一章 为什么千头万绪 {{{ ...

  3. 深入浅出Win32多线程程序设计之线程通信

    简介 线程之间通信的两个基本问题是互斥和同步. 线程同步是指线程之间所具有的一种制约关系,一个线程的执行依赖另一个线程的消息,当它没有得到另一个线程的消息时应等待,直到消息到达时才被唤醒. 线程互斥是 ...

  4. Win32多线程程序设计学习(第五章)

    目录 不要让线程成为脱缰野马 1,干净地终止一个线程 "TerminateThread() 是一个危险的函数,应该在最不得已的情况下才使用" 2,线程优先权(Thread Prio ...

  5. win32多线程程序设计笔记(第四章上)

    前面已经介绍了线程的创建.销毁过程,如何判断一个线程是否结束:但是撰写多线程程序的一个挑战性问题就是:如何让一个线程和另外一个线程合作. 在同一时间段会存在多个线程,当这些线程同时存取同一数据时,就会 ...

  6. 《Win32多线程程序设计》学习笔记 第17章 OLE ActiveX COM

    Apartment Model 在该模型中,一个对象和一个特定的线程有关联,只有在该线程的context之中才能够调用该对象. COM的"apartment"是一个对象产生,运作和 ...

  7. 《Win32多线程程序设计》-侯杰【最后更新日期:16/02/23

    [读者背景:零基础] 第1章 为什么要千头万绪 我们通过API函数调整进程的优先级别是基于用户态的,核心态的进程优先级对用户是透明的,用户也无权干涉. 进程包含:内存和资源.资源包括核心对象(file ...

  8. Win32多线程编程(1) — 基础概念篇

    内核对象的基本概念 Windows系统是非开源的,它提供给我们的接口是用户模式的,即User-Mode API.当我们调用某个API时,需要从用户模式切换到内核模式的I/O System Servic ...

  9. Win32多线程编程(2) — 线程控制

    Win32线程控制只有是围绕线程这一内核对象的创建.挂起.恢复.终结以及通信等操作,这些操作都依赖于Win32操作系统提供的一组API和具体编译器的C运行时库函数.本篇围绕这些操作接口介绍在Windo ...

最新文章

  1. 精美的电路图都是怎么画出来的?
  2. Flume的安装与配置
  3. JavaScript中闭包实现的私有属性的getter()和setter()方法
  4. 【转】PHP的Trait 特性
  5. 用户研究:如何做用户画像分析
  6. Python3 爬虫学习笔记 C13【验证码对抗系列 — 滑动验证码】
  7. wordpress 固定链接变成html,wordpress固定链接只有默认能用,其他链接设置网页打不开怎么办...
  8. markdown这么好用的东西我才知道。。。多么不折腾的我。。。
  9. 计算机开机密码设置要求,电脑设置开机密码
  10. Markdown写作工具盘点
  11. 《阿里巴巴Java开发手册(正式版)》--安全规约
  12. 客户细分_客户细分初学者指南
  13. 计算机学院心理节活动主题,计算机学院举行心理健康教育主题团体活动
  14. 北大才女笔记:这样学习线性回归和梯度下降(上篇)
  15. 电商项目业务整体概览
  16. Android 模拟器一键获取root权限 一键安装Google play 服务
  17. 有关QSignalMapper的只言片语
  18. 视频教程-SpringBoot实战视频教程-Java
  19. Scrum 使用絮叨
  20. vue2-router.beforeEach不同角色登录到不同页面

热门文章

  1. 我整理的CSS - lbx
  2. 代码随想录打卡18天
  3. crf*.bdb文件过大问题处理
  4. 2021年中国商铺施工面积、新开工面积、销售面积及未来发展趋势分析[图]
  5. 看守所视频AI行为分析算法
  6. C plus plus ——【模板应用】
  7. java.sql.SQLException: sql injection violation, part alway false condition not allow
  8. 在线画图工具https://www.draw.io/
  9. 程序猿接单必看的四个平台!!!
  10. Python定时备份mysql数据库并把备份邮件发送