在一个名为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为什么你必须居高临下?出于某种原因,他显然在这里张贴这个问题。要么他只限于使用互斥体,或者他不了解'事件'和/或'信号量'。 –