WaitForSingleObject的用法详细介绍
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的用法详细介绍相关推荐
- 【MADDPG(MPE)——环境配置与用法详细介绍(多智能体强化学习))】
MADDPG(MPE)--环境配置与用法详细介绍(多智能体强化学习) MADDPG(MPE) 介绍 MPE环境安装教程 前期准备 MPE 安装包介绍 MPE 安装环境要求 开始安装 环境测试 MPE环 ...
- php中sisson用法,详细介绍php中session的用法
PHP中的session默认情况下是使用客户端的Cookie.当客户端的Cookie被禁用时,会自动通过Query_String来传递. Php处理会话的函数一共有11个,我们详细介绍一下将要用到几个 ...
- 数据库having的用法详细介绍
转自:微点阅读 https://www.weidianyuedu.com 数据库having的用法的用法你知道吗?下面微点阅读小编就跟你们详细介绍下数据库having的用法的用法,希望对你们有用. ...
- Nacos注册中心的部署与用法详细介绍
一.什么是注册中心: 我们知道微服务彼此间独立部署.具有清晰的边界,服务间通过远程调用来构建复杂的业务功能.而服务册中心在微服务项目中扮演着非常重要的角色,那么注册中心又是什么,使用服务注册中心可以解 ...
- mysql 中show 命令用法详细介绍 mysql过程(procedure)的使用
a. show tables或show tables from database_name; -- 显示当前数据库中所有表的名称 b. show databases; -- 显示mysql 中所有数据 ...
- js中typeof用法详细介绍
本文章来介绍在js使用中的一个函数typeof用法, typeof 运算符把类型信息当作字符串返回,包括有大家常有变量类型. typeof 运算符把类型信息当作字符串返回.typeof 返回值有六种可 ...
- Thinkphp中import的几个用法详细介绍
下面附上import的几个用法介绍 1.用法一 import('@.Test.Translate'); @,表示项目根目录.假定根目录是:App/ 导入类库的路径是:App/Lib/Test/Tran ...
- Nacos配置中心用法详细介绍
上篇文章介绍了 Nacos 作为注册中心的用法,除此之外,Nacos 还能作为配置中心使用,那这篇文章就介绍下 Nacos 作为配置中心的基本用法,首先我们先了解下为什么需要使用配置中心. 一.为什么 ...
- while read line 用法详细介绍
循环中的重定向 或许你应该在其他脚本中见过下面的这种写法: while read line do - done < file 刚开始看到这种结构时,很难理解< file是如何与循环配合在一 ...
最新文章
- Qt+OpenCV界面
- 一份不大的救命文档,一场时间与生死的接力
- 7添加静态路由 hat red_两个不同网段的路由器,如何互通?
- linux命令菜鸟ping,Linux ping命令
- BSP hidden form in generated html source code
- Hive2.1.1、Hadoop2.7.3 部署
- python编程计算前30项的和_Python 程序员需要知道的 30 个技巧
- Kubernetes入门--搭建Kubernetes集群,并启动容器服务
- 笔记本交还公司了,伴随了我两年的家伙。
- jQuery微博登录
- CE修改器使用教程 [入门篇]
- 新浪通行证在线申诉找回密码业务逻辑错误导致严重安全漏洞
- 指令系统相兼容的计算机称为系列机,第4章指令系统.ppt
- 阿里云DataV实现MySQL数据库类型数据源绑定
- 情感分析技术:让智能客服更懂人类情感
- 关于国密HTTPS的那些事(三)
- Android APP启动白屏的解决办法
- Transformer最详细的原理加代码解读
- [附源码]java毕业设计学习资源共享与在线学习系统
- 竞赛服务器响应超时是否尝试重连,“吃鸡”坐在后座也能操控载具?几分钟后,我收到15字提醒...