Windows进程同步之事件内核对象(Event)

在所有的内核对象中,事件内核对象比其他的简单的多,可以用事件内核对象对不同进程进行同步。事件内核对象主要包括三个部分:使用计数,一个表示是自动还是手动重置事件的布尔值,一个表示是否有信号的布尔值。使用计数:和其他内核对象一样,用来标识使用该事件对象的不同线程个数。表示自动或手动重置事件的布尔值:当一个事件是自动重置事件,事件被触发后,只有一个等待的线程会变成可调度状态(根据系统的调度策
摘要由CSDN通过智能技术生成

在所有的内核对象中,事件内核对象比其他的简单的多,可以用事件内核对象对不同进程进行同步。

事件内核对象主要包括三个部分:使用计数一个表示是自动还是手动重置事件的布尔值一个表示是否有信号的布尔值

  • 使用计数:和其他内核对象一样,用来标识使用该事件对象的不同线程个数。
  • 表示自动或手动重置事件的布尔值:当一个事件是自动重置事件,事件被触发后,只有一个等待的线程会变成可调度状态(根据系统的调度策略),然后该事件会自动变成未触发状态;当一个事件是手动重置事件,事件被触发后,所有等待的线程都会变成可调度状态,该事件在触发后一直为触发状态,直到手动重置该事件为未触发状态。
  • 是否有信号的布尔值:表示改事件是否被触发。

下面是使用事件内核对象的所要使用的函数接口:

1CreateEvent()
HANDLE WINAPI CreateEvent(
  _In_opt_  LPSECURITY_ATTRIBUTES lpEventAttributes,
  _In_      BOOL bManualReset,
  _In_      BOOL bInitialState,
  _In_opt_  LPCTSTR lpName
);

lpEventAttributes:事件对象的安全属性,一般置为NULL

bManualReset:事件对象是手动重置事件(TRUE)还是自动重置事件(FALSE);

bInitialState:初始状态时触发状态(TRUE)还是非触发状态(FALSE);

lpName:创建有名的事件对象,用于进程间的共享;

如果该事件对象已经存在,那么CreateEvent会返回该内核对象的句柄,并通过系统返回错误

  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值