我知道dekker算法的外观如何,但是为什么这样的方法行不通?
static void Enter(int i)
{
int j = 1 - i;
flags[i] = true;
if(flags[j])
{
while (turn!=i)
{
}
}
}
static void Exit(int i)
{
flags[i] = false;
turn = 1 - i;
}
我的解决方案出了什么问题?
最佳答案
有很多简单的方法可以将Dekker's algorithm(例如Peterson's algorithm)与您的代码非常相似。根据Wiki的说法,Dekker's是该问题的第一个正确解决方案,因此也就不足为奇了。
简短查看之后,您的代码似乎可以正常工作,但是如果没有正式的证明,就无法保证。
关于multithreading - 德克算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15865629/