内核事件对象---EVENT用法

来源:互联网 发布:重庆大学包月网络 编辑:程序博客网 时间:2024/05/21 07:14

HANDLE CreateEvent(
  LPSECURITY_ATTRIBUTES lpEventAttributes,
                                         // pointer to security attributes
  BOOL bManualReset,       // flag for manual-reset event
  BOOL bInitialState,         // flag for initial state
  LPCTSTR lpName            // pointer to event-object name
);

 

 

第一个是与安全有关的结构指针

 

常常使用NULL

 

第二个表示这个事件是手动重置还是自动充值

 

所有的资料都说的这样简单以至于我不懂这句话到底是什么含义

 

在实验后我不得不要用很多话来解释这个参数或许只有这样才能让我自己以后再

 

看到时一下就能明白

 

如果这个参数设置为TRUE表示为手动重置,就是说如果这个事件处于有信号状

 

态(所谓有信号状态就是说我们调用WaitForSingleObject时可以不用等待后面

 

的时间参数直接向下执行)当我们调用WaitForSingleObject 后这个信号状态

 

仍处于有信号,而这时其他线程如果使用了WaitForSingleObject这个函数

 

也可以向下执行,所以这将不能起到线程同步的作用,于是我们要在一个线程进

 

入WaitForSingleObject后将这个事件更改为无信号(ResetEvent函数),这

 

样使当前线程霸占接下来代码中的数据信息,当对要操作的数据内容结束后,

 

才可以将事件更改为有信号(SetEvent),于是其他线程可以得到向下运行的机

 

会。

 

就这个参数竟然说了这么多,有点墨迹,不过应该更容易理解了。

 

第三个参数表示的是创建的事件的初始状态,当为TRUE时事件是非信号状态,

 

等待这个事件的线程都将停留。这样做的目的往往都是为了照顾后面的线程创建

 

或者一些初始化操作。待 操作完成后再执行 SetEvent。

 

最后一个参数为事件命名!不再多说!

 

下面看例程

 

原创粉丝点击