perterson演算法學習

2021-09-10 08:11:57 字數 553 閱讀 3188

程序同步主要用來解決臨界區問題,簡單來講就是確保同一時間只能有乙個程序訪問臨界區。現在介紹乙個比較經典的peterson演算法。

演算法使用兩個控制變數flag與turn. 其中flag[n]的值為真,表示id號為n的程序希望進入該臨界區. 標量turn儲存有權訪問共享資源的程序的id號.

p0:flag[0] = true;

turn = 1;

while (flag[1] == true && turn == 1)

// critical section

flag[0] = false; // end of critical section

p1:flag[1] = true;

turn = 0;

while (flag[0] == true && turn == 0)

// critical section

flag[1] = false; // end of critical section

注意到如果程序p0和p1併發,那麼兩者中必然會有乙個會被while堵塞住(可以假設turn=0或turn=1試一下)

程序同步之Perterson演算法

程序同步主要用來解決臨界區問題,簡單來講就是確保同一時間只能有乙個程序訪問臨界區。現在介紹乙個比較經典的peterson演算法。peterson演算法的表述如下 對於程序pi和pj來說,設定乙個整數變數turn來確定誰可以進入臨界區,和乙個整型陣列flag 2 來確定誰想進去臨界區。do我們可以這麼...

演算法學習 Union Find演算法

union find演算法有它的實際用途。多用於動態連通的應用場景。union find演算法是 給出兩個節點,判斷它們是否連通,如果連通,是不需要給出具體的路徑的 舉兩個例子作為主要表現 1 在網路連線中,當發現沒有連線的兩個節點,可以把他們連線起來,一旦節點都連線起來,又能把多餘的線拆除,這時候...

演算法學習 KM演算法

km演算法 用於求二分圖的最佳完美匹配 即權值最大的完美匹配 如果你也是個剛來學習km演算法的人 大概的用途肯定還是知道的吧 還是直接說重點吧 首先 理解km演算法前 必須有以下3個概念 1.可行頂標 對於乙個賦值二分圖g x,y,e,w x,y 代表二分圖的兩邊頂點標號 e代表邊 w代表邊的權值 ...