请问一个Mutex有关问题

请教一个Mutex问题Fun(){hMutex CreateMutex(NULL, FALSE, ok)CreateThread(NULL, 0, mythread, NULL

请教一个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 不是这样用的,它不提访问的顺序性。