C++ createEvent和WaitForSingleObject配合使用详解

本文详细介绍了C++中如何使用CreateEvent创建事件,并结合WaitForSingleObject进行线程同步。通过实例展示了不同参数设置对事件状态的影响,解释了有信号和无信号在多线程中的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言
     线程同步技术之一:Event,事件作为多线程同步的重要方式之一,学习它的使用是多线程编程必不可少的步骤,我们通过几个函数来分例剖析下该线程同步方法

 

正文

     事件的创建通过createEvent函数实现,下面是函数的介绍:

The CreateEvent function creates a named or an unnamed event object. 

HANDLE CreateEvent( 
LPSECURITY_ATTRIBUTES lpEventAttributes, 
BOOL bManualReset, 
BOOL bInitialState, 
LPTSTR lpName); 
第一个参数指出安全策略,一般采用默认即可
第二个参数指明是否为手动重置。如果为true,那么必须手动调用ResetEvent来使事件置为无信号状态;如果为false,则系统会自动置为无信号状态
第三个参数指明创建事件时信号的默认值,true为有信号,false为无信号
第四个参数为事件的命名。这里表明该事件到底是命名还是匿名的事件

通过上述介绍我们同样了解到SetEvent是用来设定事件为有信号,ResetEvent设置事件为无信号。

 

那事件有信号和无信号到底有什么用,又是怎么用的呢?可以想象以下这样的场景,比如一群人在等候就餐,服务员喊道:38号(有信号)。那38号顾客就可以去就餐,对于那些没被叫道号(无信号)则需继续排队。同样如此,对于多线程只有当该线程有信号时,才能获取CPU事件进而执行相关操作;如果没有信号

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值