2

デッカーアルゴリズムがどのように見えるかは知っていますが、なぜそのようなものが機能しないのでしょうか?

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 に答える