线程同步与异步套接字编程(一)
前面三章我们介绍了多线程同步处理方法是创建互斥对象来实现多线程同步运行。这章我们讲解如何运用事件对象来处理线程同步: 事件对象也是属于内核对象,其包含三个成员:1.使用计数;2.用于指明该事件是一个自动重置的事件还是一个人工重置的事件的布尔值;3.用于指明该事件处于已通知状态还是未通知状态的布尔值。 事件对象有两种不同的类型:人工重置的事件对象和自动重置的事件对象。 事件对象的创建函数为HANDLE CreateEvent,-------用于创建或者打开一个命名的或匿名的事件对象。 1 CreateEvent( 2 LPSECURITY_ATTRIBUTES lpEventAttributes, 3 BOOL bManualReset, 4 BOOL bInitialState, 5 LPCWSTR lpName 6 ); 参数说明: 安全属性,如果为NULL,则使用默认的安全性; 人工重置,如果为true,则表示该函数将创建一个人工重置事件对象;否则为自动重置对象; 事件对象状态初始化,如果为true,表示该事件对象初始值是有信号状态;否则是无信号状态; 事件对象名称,如果为NULL,表示创建一个匿名的事件对象。 重置事件对象状态函数: BOOL ResetEvent(HANDLE hEvent); 设置事件对象状态函数: BOOL SetEvent(HANDLE hEvent)