Windows提供了许多内核对象来实现线程的同步。对于线程同步而言,这些内核对象有两个非常重要的状态:“已通知”状态,“未通知”状态(也有翻译为:受信状态,未受信状态)。Windows提供了几种内核对象可以处于已通知状态和未通知状态:进程、线程、作业、文件、控制台输入/输出/错误流、事件、等待定时器、信号量、互斥对象。

你可以通知一个内核对象,使之处于“已通知状态”,然后让其他等待在该内核对象上的线程继续执行。你可以使用Windows提供的API函数,等待函数来等待某一个或某些内核对象变为已通知状态。

你可以使用WaitForSingleObject函数来等待一个内核对象变为已通知状态:
  DWORD WaitForSingleObject(
HANDLE hObject, //指明一个内核对象的句柄
DWORD dwMilliseconds); //等待时间

该函数需要传递一个内核对象句柄,该句柄标识一个内核对象,如果该内核对象处于未通知状态,则该函数导致线程进入阻塞状态;如果该内核对象处于已通知状态,则该函数立即返回WAIT_OBJECT_0。第二个参数指明了需要等待的时间(毫秒),可以传递INFINITE指明要无限期等待下去,如果第二个参数为0,那么函数就测试同步对象的状态并立即返回。如果等待超时,该函数返回WAIT_TIMEOUT。如果该函数失败,返回WAIT_FAILED。
 
在多线程下面,有时候我们会希望等待某一线程完成了再继续做其他事情,要实现这个目的,可以使用Windows API函数WaitForSingleObject,或者WaitForMultipleObjects。这两个函数都会等待Object被标为有信号(signaled)时才返回的。
那么,什么是信号呢?
简单来说,Windows下创建的Object都会被赋予一个状态量。如果Object被激活了,或者正在使用,那么该Object就是无信号,也就是不可用;另一方面,如果Object可用了,那么它就恢复有信号了。

如果想要等待一条线程,那么你需要指定线程的Handle,以及相应的Timeout时间。当然,如果你想无限等待下去,Timeout参数可以指定系统常量INFINITE。

WaitForSingleObject的用法详细介绍相关推荐

  1. 【MADDPG(MPE)——环境配置与用法详细介绍(多智能体强化学习))】

    MADDPG(MPE)--环境配置与用法详细介绍(多智能体强化学习) MADDPG(MPE) 介绍 MPE环境安装教程 前期准备 MPE 安装包介绍 MPE 安装环境要求 开始安装 环境测试 MPE环 ...

  2. php中sisson用法,详细介绍php中session的用法

    PHP中的session默认情况下是使用客户端的Cookie.当客户端的Cookie被禁用时,会自动通过Query_String来传递. Php处理会话的函数一共有11个,我们详细介绍一下将要用到几个 ...

  3. 数据库having的用法详细介绍

    转自:微点阅读  https://www.weidianyuedu.com 数据库having的用法的用法你知道吗?下面微点阅读小编就跟你们详细介绍下数据库having的用法的用法,希望对你们有用. ...

  4. Nacos注册中心的部署与用法详细介绍

    一.什么是注册中心: 我们知道微服务彼此间独立部署.具有清晰的边界,服务间通过远程调用来构建复杂的业务功能.而服务册中心在微服务项目中扮演着非常重要的角色,那么注册中心又是什么,使用服务注册中心可以解 ...

  5. mysql 中show 命令用法详细介绍 mysql过程(procedure)的使用

    a. show tables或show tables from database_name; -- 显示当前数据库中所有表的名称 b. show databases; -- 显示mysql 中所有数据 ...

  6. js中typeof用法详细介绍

    本文章来介绍在js使用中的一个函数typeof用法, typeof 运算符把类型信息当作字符串返回,包括有大家常有变量类型. typeof 运算符把类型信息当作字符串返回.typeof 返回值有六种可 ...

  7. Thinkphp中import的几个用法详细介绍

    下面附上import的几个用法介绍 1.用法一 import('@.Test.Translate'); @,表示项目根目录.假定根目录是:App/ 导入类库的路径是:App/Lib/Test/Tran ...

  8. Nacos配置中心用法详细介绍

    上篇文章介绍了 Nacos 作为注册中心的用法,除此之外,Nacos 还能作为配置中心使用,那这篇文章就介绍下 Nacos 作为配置中心的基本用法,首先我们先了解下为什么需要使用配置中心. 一.为什么 ...

  9. while read line 用法详细介绍

    循环中的重定向 或许你应该在其他脚本中见过下面的这种写法: while read line do - done < file 刚开始看到这种结构时,很难理解< file是如何与循环配合在一 ...

最新文章

  1. Qt+OpenCV界面
  2. 一份不大的救命文档,一场时间与生死的接力
  3. 7添加静态路由 hat red_两个不同网段的路由器,如何互通?
  4. linux命令菜鸟ping,Linux ping命令
  5. BSP hidden form in generated html source code
  6. Hive2.1.1、Hadoop2.7.3 部署
  7. python编程计算前30项的和_Python 程序员需要知道的 30 个技巧
  8. Kubernetes入门--搭建Kubernetes集群,并启动容器服务
  9. 笔记本交还公司了,伴随了我两年的家伙。
  10. jQuery微博登录
  11. CE修改器使用教程 [入门篇]
  12. 新浪通行证在线申诉找回密码业务逻辑错误导致严重安全漏洞
  13. 指令系统相兼容的计算机称为系列机,第4章指令系统.ppt
  14. 阿里云DataV实现MySQL数据库类型数据源绑定
  15. 情感分析技术:让智能客服更懂人类情感
  16. 关于国密HTTPS的那些事(三)
  17. Android APP启动白屏的解决办法
  18. Transformer最详细的原理加代码解读
  19. [附源码]java毕业设计学习资源共享与在线学习系统
  20. 竞赛服务器响应超时是否尝试重连,“吃鸡”坐在后座也能操控载具?几分钟后,我收到15字提醒...

热门文章

  1. JS的数据访问及优化访问速度
  2. Creating a Jabber Client using the agsXMPP Library
  3. vim使用四个空格代替TAB键
  4. [codeVS1204] 单词背诵
  5. [译]ASP.NET Core 2.0 机密配置项
  6. JavaScript事件对象
  7. android 放大镜
  8. 如何在 InfoPath 2003 表单中动态加载数据
  9. apache http server指的是什么
  10. IT常说的协议指的是什么?—Vecloud微云