1
維基百科:理解比賽條件
競態條件出現在當軟件單獨的計算機處理或執行的線程依賴於某些共享的狀態。
如果我正確地理解了這個,這是否意味着以下事件也是一種競爭條件,儘管共享資源受到保護?
int x; // global
Thread1:
Lock(m);
x=1;
Unlock(m)
Thread2:
Lock(m);
x=2;
Unlock(m);
顯然,輸出取決於執行順序。
維基百科:理解比賽條件
競態條件出現在當軟件單獨的計算機處理或執行的線程依賴於某些共享的狀態。
如果我正確地理解了這個,這是否意味着以下事件也是一種競爭條件,儘管共享資源受到保護?
int x; // global
Thread1:
Lock(m);
x=1;
Unlock(m)
Thread2:
Lock(m);
x=2;
Unlock(m);
顯然,輸出取決於執行順序。
你的理解是正確的。這是一個競爭條件,但它不是數據競賽。差別是微妙的;我試圖解釋它here。
通常情況下,只有在遇到問題時纔會調用某種比賽。這取決於您所需的應用程序和行爲。 – Erik 2013-04-09 09:32:17