プログラミングメモ →目次

CMutex, CSingleLockクラスにより排他制御(MFC)

MFCのCMutex, CSingleLockクラスを利用して、排他処理を簡単に行えます。
例:複数のスレッドで、ある構造体からデータ取得する処理、及び構造体にデータを上書きする処理。

//宣言  
CMutex g_Mutex;  
struct tagDATA  
{  
	データ1;  
	データ2;  
} g_Data;  

//データ取得  
void Read(struct tagDATA* dat)  
{  
	CSingleLock sl(&m_Mutex);  
	sl.Lock();  
	memcpy(dat, g_Data, sizeof(struct tagDATA));  
	sl.Unlock();  
}  

//データ上書き  
void Write(struct tagDATA* dat)  
{  
	CSingleLock sl(&m_Mutex);  
	sl.Lock();  
	memcpy(g_Data, dat, sizeof(struct tagDATA));  
	sl.Unlock();  
}