请教一个Mutex问题
Fun()
{
hMutex = CreateMutex(NULL, FALSE, "ok");
CreateThread(NULL, 0, mythread, NULL, 0, NULL);
//part1...
WaitForSigleObject(hMutex, INFINITE);
return 0;
}
DWORD WINAPI mythread(LPVOID)
{
WaitForSingleObject(hMutex, INFINITE);
//part2...
ReleaseMutex(hMutex);
return 0;
}
如何保证mythread先得到Mutex,如果Fun就是主线做完part1并且比mythread先得到Mutex会出错
[解决办法]
你fun中的WaitForSigleObject(hMutex, INFINITE)没有释放mutex啊,这样的话mythread怎么能得到mutex。
[解决办法]
定义一个全局变量,如果没有修改这个变量的话就让它sleep,直到在myfunc中修改这个值后才让fun执行,可以么??
[解决办法]
把fun里面的 WaitForSigleObject(hMutex, INFINITE);换成等待那个线程结束
[解决办法]
Mutex 不是这样用的,它不提访问的顺序性。