在一個名爲Record的函數中,我創建了一個線程。讓線程函數被稱爲ThreadFn。 我希望Record等待,直到從ThreadFn開始的ThreadFn中的一段代碼完成。 我該怎麼做?我一直在與互斥體一起嘗試。但我不確定將CreateMutex放到哪裏以及放置ReleaseMutex的位置。如何讓一個線程等待另一個線程的一部分完成?
我嘗試以下。但它不起作用。 有一個全局變量
HANDLE ghMutex = NULL;
內ThreadFn: 起初
ghMutex = CreateMutex(NULL, FALSE, NULL);
當代碼塊已經完成,然後
ReleaseMutex(ghMutex);
內錄:
Create the thread
WaitForSingleObject(ghMutex, INFINITE);
Close thread handle
CloseHandle(ghMutex);
不工作。來電者不在等待。 – Avinash
爲什麼開發者不斷嘗試誤用互斥?如果要發信號通知其他線程,請使用適當的同步對象。查看'Event'和/或'Semaphore'。要麼會做你看起來想要的。一個互斥對象就是這個錯誤的對象。 – ThingyWotsit
@ThingyWotsit爲什麼你必須居高臨下?出於某種原因,他顯然在這裏張貼這個問題。要麼他只限於使用互斥體,或者他不瞭解'事件'和/或'信號量'。 –