在多线程应用程序中,MFC同步类用来防止数据对象同时访问。一个MFC应用程序可以同时运行多个线程。如果不止一个这样的线程同时修改相同的数据对象且同时把该数据保存到相同内存地址时,便有可能破坏该数据。在一个多线程应用程序中,四个M F C类用来同步。
CMutex
用来防止多个线程同时访问同一数据对象。要启用
CMutex
,先要把它添加到数据类的成员变量;接着构造另一个
MFC
类,即
CSingleLock
,对任何访问这些成员变量的成员函数引用
CMutex
;然后调用
CSingleLock
的
Lock (
int
timeout)
成员函数。如果别的线程已在访问该数据,则
Lock ( )
函数不返回,直到该线程调用
Unlock ( )
或超时时才返回。
CMultiLock
类允许指定多个
CMutex
对象,以便能同时服务多个访问
CSemaphore
与CMutex类基本相同
,
但是
,
前者允许同时存在一个或多个同时发生的访问
;
CCriticalSection
与CMutex类基本相同,但是,前者在堆栈中被构造,并有比CMutex
更快的速度;
CEvent
基于任何事件
(
不仅仅是被另一线程访问
)
对数据访问进行同步
。
线程将一直等待,直到调用CEvent的SetEvent
和ResetEvent
成员函数允许它们继续为止
。
;