首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

请问一个Mutex有关问题

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

热点排行