学习多线程之三:线程同步--使用互斥 下载本文配套代码 从而我们可以这样来定义数据对象: #include "afxmt.h" class CDataArray { private: int iArray[10]; CMutex Mutex; public: CDataArray(){}; ~CDataArray(){}; void SetData(int iValue); void GetDataArray(int aArray[10]); };
成员函数实现如下: void CDataArray::SetData(int iValue) { CSingleLock SingleLock(&Mutex); SingleLock.Lock(); for (int i=0;i<10;i++) iArray[i]=iValue; } void CDataArray::GetDataArray(int aArray[10]) { CSingleLock SingleLock(&Mutex); SingleLock.Lock(); for (int i=0;i<10;i++) aArray[i]=iArray[i]; }
为了访问一个互斥对象,务必建立一个CSingleLock或CMultiLock对象,用于访问控制。如果互斥没有被线程占用,那么当前的调用线程可以成为互斥的占用者。要实现对互斥的访问,就要调用CSingleLock的成员函数Lock(),即: |
///////////////////////////////////////////////////////////////////////////////
|
|
//////////////////////////////////////////////////////////////////////////////
|
评论