2010-11-29 65 views
4

在併發編程中,比賽死鎖之間有什麼區別和共同點(如果有的話)?詳細的答案將不勝感激;)。比賽和死鎖之間的區別

+0

看看[這個SO問題](http://stackoverflow.com/questions/3130079/difference-between-racearound-condition-and-deadlock)。它很生動。 – 0xa6a 2017-03-30 02:39:01

回答

8

看一看Description of race conditions and deadlocks

競爭條件

當兩個線程 在 同時訪問共享的變量時,會發生競爭條件。第一個線程讀取變量 ,第二個線程 從 變量讀取相同的值。然後第一個線程和第二個線程對該值執行其操作 ,並且它們競爭以看 哪個線程可以將最後的值 寫入共享變量。 的值將保留寫入其值 的線程,因爲該線程是 寫入的前一個線程寫入的值。

死鎖

當兩個線程 每個鎖在 同一時間不同的變量,然後試圖鎖定 變量,其他線程已經 鎖定發生死鎖。結果,每個線程停止執行 並等待其他線程釋放該變量。 因爲每個線程都保存着另一個線程想要的 變量,所以 什麼都不會發生,並且線程仍然是 死鎖。