麵包店演算法理解

2021-05-02 09:59:00 字數 659 閱讀 1737

boolean  choosing[n];表示程序是否在取號

int  number[n];記錄每個程序取到的號碼

這些資料結構分別初始化為false和0,為了方便,定義如下符號:

若ado

+1;//選號碼

choosing[i] = false;

for(j = 0; j//臨界區

number[i] = 0;

//其餘部分

}while(1);

理解:第乙個試圖進入臨界區的程序pi在沒有其它程序競爭時順利進入其臨界區。滿足了有空就進的要求。

當有競爭者pk(i在pi程序中j==i時,number[j]==number[i],且j==i所以(number[j],j)<(number[i],i)不成立,退出while語句。j==k時,number[k]==number[i],且k>i所以(number[j],j)<(number[i],i))不成立,退出while語句。對與其它非i和k的j值,number[j]!=0不成立,退出while語句。

在pk程序中j==i時,number[j]

lamport麵包店演算法簡介

lamport麵包店演算法是解決多個執行緒併發訪問乙個共享的單使用者資源的互斥問題的演算法。由萊斯利 蘭波特發明。lamport把這個併發控制演算法非常直觀地模擬為顧客去麵包店採購。這個模擬中的顧客就相當於執行緒,而入店購貨就是進入臨界區獨佔訪問該共享資源。由於計算機實現的特點,存在兩個執行緒獲得相...

A 演算法理解

廣度優先 bfs 和深度優先 dfs 搜尋 深度優先搜尋,用俗話說就是不見棺材不回頭。演算法會朝乙個方向進發,直到遇到邊界或者障礙物,才回溯。一般在實現的時候,我們採用遞迴的方式來進行,也可以採用模擬壓棧的方式來實現。如下圖,s代表起點,e代表終點。我們如果按照右 下 左 上這樣的擴充套件順序的話,...

dijkstra 演算法理解

求有向圖中乙個源點到其他頂點的最短距離 自己的理解 剛開始的時候相當於有三個集合 v 頂點集合 s 已求得的最短距離頂點集合,假設求a到其他頂點的最短距離 s 剩餘頂點集合 d 儲存的是最短距離值 求一維陣列中的最小值的下標,這個陣列不包含已經求得的頂點 找出最小值下標後,放入到s中,然後求剩餘頂點...