怎样控制这样的四个线程?
//启动四个线程,如何控制线程才能让四个线程同时工作,即:同时拷贝并比较大小。为了防止线程A,C和线程B,D数据冲突,怎样控制 ?
A = AfxBeginThread(ThreadFunc1,this);
B = AfxBeginThread(ThreadFunc2,this);
C = AfxBeginThread(ThreadFunc1,this);
D = AfxBeginThread(ThreadFunc2,this);
UINT ThreadFunc1(LPVOID lParam)
{
CFWConfigDlg *Config_dlg = (CFWConfigDlg*)lParam;
//从Path1拷贝到Path2,并比较数据是否相同
Config_dlg -> Copy_Compare_File(Path1, Path2);
}
UINT ThreadFunc2(LPVOID lParam)
{
CFWConfigDlg *Config_dlg = (CFWConfigDlg*)lParam;
//从Path2拷贝到Path1,并比较数据是否相同
Config_dlg -> Copy_Compare_File(Path2, Path1);
}
bool Generate_File(char* m_From_path, char* m_to_path)
{
}
[解决办法]
用信号量或互斥体控制临界资源的读写,避免脏读,和写竞争。
[解决办法]
哈哈,到这你要是用ACE优势就体现出来了吧 定义一个 ACE_Process_Mutex m_Mutex;
在可能会出现公用的数据前后加上m_Mutex.acquire()和m_Mutex.release()就OK了