MFC同步类

来源:互联网 发布:天正建筑 for mac 编辑:程序博客网 时间:2024/06/05 14:31

在多线程应用程序中,MFC同步类用来防止数据对象同时访问。一个MFC应用程序可以同时运行多个线程。如果不止一个这样的线程同时修改相同的数据对象且同时把该数据保存到相同内存地址时,便有可能破坏该数据。在一个多线程应用程序中,四个M F C类用来同步。

CMutex用来防止多个线程同时访问同一数据对象。要启用CMutex,先要把它添加到数据类的成员变量;接着构造另一个MFC类,即CSingleLock,对任何访问这些成员变量的成员函数引用CMutex;然后调用CSingleLockLock (int timeout)成员函数。如果别的线程已在访问该数据,则Lock ( )函数不返回,直到该线程调用Unlock ( )或超时时才返回。CMultiLock类允许指定多个CMutex对象,以便能同时服务多个访问

CSemaphore与CMutex类基本相同,但是,前者允许同时存在一个或多个同时发生的访问
CCriticalSection与CMutex类基本相同,但是,前者在堆栈中被构造,并有比CMutex更快的速度;
CEvent基于任何事件(不仅仅是被另一线程访问)对数据访问进行同步线程将一直等待,直到调用CEvent的SetEvent和ResetEvent成员函数允许它们继续为止

 

原创粉丝点击