一个手工CEvent对象存在于由ResetEvent 或SetEvent设置的状态中,直到另一个函数被调用。一个自动CEvent对象在至少一个线程被释放后自动返回一个无标记(无用的)状态。
要使用一个CEvent对象,应在需要时构造一个CEvent对象。指定要等待的事件,应用应拥有它,就可以在
构造函数返回时访问事件。调用SetEvent标记(使可用)
事件对象,然后当访问完控制资源时,调用Unlock函数。
另一个使用CEvent对象的方法是添加一个CEvent类型的变量,使之成为希望控制的类的一个
数据成员。在控制对象被构造期间,可调用CEvent数据成员的构造函数,它指明时间是否是最初就被标记、需要的事件对象类型、事件名称(如果在进程中要使用)和所希望的安全属性。
按以下方式访问一个被CEvent对象控制的资源:首先创建在资源访问成员函数中构造一个CSingleLock或CMultiLock类型的变量,然后调用封锁对象的Lock成员函数(如CMultiLock::Lock)。此时,线程要么可以访问资源,等待资源释放后访问;要么等待资源释放而超时,访问资源失败。在各种情况下,资源都被以
线程安全方式访问。要释放资源,可调用SetEvent来标识一个
事件对象,然后使用封锁对象的Unlock成员函数(如CMultiLock::UnLock)成员函数,或允许封锁对象超过范围。#include