Welcome

首页 / 软件开发 / C++ / 线程同步--使用临界区

线程同步--使用临界区2011-01-07龚辉斌临界区是一种保证在某一时刻只有一个线程能访问数据的简便办法。不管哪一个线程占用临界区对象,它都可以访问受保护的数据,而其他线程就必须等待,直到占用临界区的线程进行释放操作,从而临界区的数据是不会一个以上的线程同一时刻访问的。

在MFC中通过CCtiticalSection类来创建临界区实例,如:CCriticalSection CriticalSection;

当线程准备访问临界区的数据时,必须调用它的成员函数Lock()进行锁定,如: CriticalSecion.Lock();如果没有任何线程占用临界区,Lock()可以向调用纯种提供临界区数据的访问,当线程完成各项数据操作后,再调用成员函数UnLock()进行释放,别的线程才可以占用临界区。如: CriticalSection.UnLock();可以定义一个数据实例:class CDataArray
{
private:
int iArray[10];
CCriticalSection CriticalSection;
public:
CDataArray(){};
~CDataArray(){};
void SetData(int iValue);
void GetDataArray(int aArray[10]);
};