Dekker算法

时间:2013-04-07 17:44:01

标签: multithreading mutual-exclusion

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

我的解决方案出了什么问题?

1 个答案:

答案 0 :(得分:0)

有一些方法可以简化代码非常相似的Dekker's algorithm,例如Peterson's algorithm。根据维基的说法,Dekker是第一个正确解决问题的方法,所以难怪他在第一次尝试时没有得到最简单的代码。

经过简短的介绍,您的代码似乎工作正常,但如果没有正式证据,则无法保证。