WInCE下线程的事件同步

程序开发中,我们经常会用到多线程。而某个线程的运行可能会依赖或影响另一线程的运行。如果一个线程需要通知其他线程某个事件发生了,可使用Event同步事件。


先来看看与Event相关的函数:
HANDLE CreateEvent(
  LPSECURITY_ATTRIBUTES lpEventAttributes,
  BOOL bManualReset,
  BOOL bInitialState,
  LPTSTR lpName
);
该函数创建一个同步对象。lpEventAttributes必须为NULL,bManualReset为是否需要人工重置对象状态(如果为TRUE,则WaitForSingleObject后需要调用ResetEvent,反之不需要),bInitialState是对象创建的初始状态(通知或未通知),lpName是事件的名字,可选。


BOOL SetEvent(
  HANDLE hEvent
);
该函数把同步对象设置为通知状态。如果hEvent非法则返回FALSE。


BOOL ResetEvent(
  HANDLE hEvent
);
该函数把同步对象设置为未通知状态。如果hEvent非法则返回FALSE。


BOOL CloseHandle(
  HANDLE hObject
);
该函数关闭一个事件句柄。如果hObject非法则返回FALSE。


再来看看相关的等待函数:
DWORD WaitForSingleObject(
  HANDLE hHandle,
  DWORD dwMilliseconds
);
该函数等待单个同步对象,dwMilliseconds为毫秒数。返回WAIT_OBJECT_0则表示等待成功,返回WAIT_TIMEOUT表示等待超时。当dwMilliseconds设置为INFINITE时,函数会无限期等待对象的通知。


DWORD WaitForMultipleObjects(
  DWORD nCount,
  CONST HANDLE* lpHandles,
  BOOL fWaitAll,
  DWORD dwMilliseconds
);
该函数等待多个同步对象。nCount为对象个数,lpHandles为对象句柄数组,fWaitAll为是否等待所有对象(当前必须为FALSE),dwMilliseconds为毫秒数。也就是说等待的对象中只要有一个有通知,函数立即返回。返回WAIT_TIMEOUT表示超时,如果返回WAIT_OBJECT_0到(WAIT_OBJECT_0 + nCount –1)的数,则表示对应的某个对象有通知。

 

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值