《Win32多线程程序设计》(6)---事件(Event Objects)

来源:互联网 发布:在淘宝免费买东西app 编辑:程序博客网 时间:2024/06/06 19:57
HANDLE CreateEvent(
LPSECURITY_ATTRIBUTES lpEventAttributes,
BOOL bManualReset,
BOOL bInitialState,
LPCTSTR lpName
);
参数

lpEventAttributes  安全属性。NULL 表示使用默认属性。该属性在Windows 95中会被忽略。bManualReset  如为FALSE,表示这个event  将在变成激发状态(因而唤醒一个线程)之后,自动重置(reset)为非激发状态。如果是TRUE,表示不会自动重置,必须靠程序操作(调用ResetEvent())才能将激发状态的event  重置为非激发状态。

bInitialState  如为TRUE,表示这个event  一开始处于激发状态。如为FALSE,则表示这个event  一开始处于非激发状态。
lpNameEvent  对象的名称。任何线程或进程都可以根据这个文字名称,使用这一event  对象。
返回值

如果调用成功,会传回一个event  handle,GetLastError() 会传回0。如果lpName  所指定的event  对象已经存在,CreateEvent() 传回的是该event handle,而不会产生一个新的。这时候GetLastError()  会传回ERROR_ALREADY_EXISTS。如果CreateEvent() 失败,传回的是NULL,GetLastError() 可以获得更进一步的失败信息。

SetEvent()  把event  对象设为激发状态
ResetEvent()  把event  对象设为非激发状态
PulseEvent()  如果是一个 Manual Reset Event :把event  对象设为激发状态,唤醒“所有”等待中的线程,然后event  恢复为非激发
状态。如果是一个Auto  Reset  Event:把event  对象设为激发状态,唤醒“一个”等待中的线程,然后event  恢复为非激发状态


文字版电子书-----请点击这里

0 0
原创粉丝点击