2

我知道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;
    }

我的解决方案有什么问题?

4

1 回答 1

0

有一些方法可以简化Dekker 算法,例如Peterson 算法,您的代码与它们非常相似。根据 wiki,Dekker 是该问题的第一个正确解决方案,所以难怪他在第一次尝试时没有得到最简单的代码。

短暂查看后,您的代码似乎可以正常工作,但如果没有正式的证明,则无法保证。

于 2015-01-18T10:32:58.937 回答