在我的课堂上,我使用该CreateThread(NULL,0,Execute1,this...)
方法创建了一个线程。
DWORD WINAPI Execute1(LPVOID lpParam) {
CoInitialize(NULL);
CVC1Dlg *pdlg=(CVC1Dlg *) lpParam;
然后我从这个线程调用 pdlg 方法:
pdlg->someMethod();
当我从这个线程调用这个方法时,如果这个方法同时从主线程调用,会发生什么?我应该使用像互斥锁这样的同步方法吗?我到底需要在哪里调用互斥锁?
我必须在 CVC1Dlg 方法中使用它是否正确?像这样的东西:
CVC1Dlg ::CVC1Dlg () {
g_hMutex=CreateMutex(...)
}
void CVC1Dlg ::setStatus(int aStatus) {
::WaitForSingleObject(g_hMutex, INFINITE);
iStatus=aStatus;
::ReleaseMutex(g_hMutex);
}