int iGlobe = 0;
...
void thread1Func()
{
Lock(&Mutex1);
if(iGlobe == 0) //step-1
someaction();
}
...
void thread2Func()
{
Lock(&Mutex2);
iGlobe = 5; //step-2
}假设,
1) Thread1执行step-1并进入睡眠状态
2)同时Thread2执行step-2并改变iGlobe的值
如何克服这种情况?
发布于 2014-04-23 15:19:36
对给定数据段的所有访问都必须在同一互斥锁上同步,否则就不会有“互斥”效应。因此,要修复您的代码,请将thread2Func更改为Lock(&Mutex1)。
https://stackoverflow.com/questions/23237348
复制相似问题