CEvent

王朝百科·作者佚名  2010-08-12
窄屏简体版  字體: |||超大  

CEvent类的一个对象,表示一个“事件”——一个允许一个事件发生时线程通知另一个线程的同步对象。在一个线程需要了解何时执行任务时,事件是十分有用的。例如,拷贝数据到数据文档时,线程应被通知何时数据是可用的。当新数据可用时,通过运用CEvent对象来通知拷贝线程,线程才可能尽快地执行。

CEvent对象有两种类型:自动和手工。一个手工CEvent对象存在于由ResetEvent 或SetEvent设置的状态中,直到另一个函数被调用。一个自动CEvent对象在至少一个线程被释放后自动返回一个无标记(无用的)状态。

要使用一个CEvent对象,应在需要时构造一个CEvent对象。指定要等待的事件,应用应拥有它,就可以在构造函数返回时访问事件。调用SetEvent标记(使可用)事件对象,然后当访问完控制资源时,调用Unlock函数。

另一个使用CEvent对象的方法是添加一个CEvent类型的变量,使之成为希望控制的类的一个数据成员。在控制对象被构造期间,可调用CEvent数据成员的构造函数,它指明时间是否是最初就被标记、需要的事件对象类型、事件名称(如果在进程中要使用)和所希望的安全属性。

按以下方式访问一个被CEvent对象控制的资源:首先创建在资源访问成员函数中构造一个CSingleLock或CMultiLock类型的变量,然后调用封锁对象的Lock成员函数(如CMultiLock::Lock)。此时,线程要么可以访问资源,等待资源释放后访问;要么等待资源释放而超时,访问资源失败。在各种情况下,资源都被以线程安全方式访问。要释放资源,可调用SetEvent来标识一个事件对象,然后使用封锁对象的Unlock成员函数(如CMultiLock::UnLock)成员函数,或允许封锁对象超过范围。#include <afxmt.h>

CEvent类的成员

构造函数CEvent构造一个CEvent对象

方法SetEvent设置一个事件可用(有标记)并释放某些等待线程PulseEvent设置一个事件可用(有标记),并释放某些等待线程,设置该事件无效(无标记)ResetEvent设置事件无效(无标记)Unlock释放事件对象

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航