-
首先死鎖是同步的,飢餓時異步的。也就是說,死鎖可以認為是兩個線程或進程同時在請求對方占有的資源
-
飢餓可以認為是一個線程或是進程在無限的等待另外兩個或多個線程或進程占有的但是不會往外釋放的資源。
當飢餓到一定程度的進程所賦予的任務即使完成也不再具有實際意義時稱該進程被餓死。
-
介紹“死鎖”的例子1:如果線程A鎖住了記錄R1並等待記錄R2,而線程B鎖住了記錄R2並等待記錄R1,這樣兩個線程A和B就發生了死鎖現象。
-
介紹“死鎖”的例子2:兩個山羊過一個獨木橋,兩只羊同時走到橋中間,一個山羊等另一個山羊過去了然后再過橋,另一個山羊等這一個山羊過去,結果兩只山羊都堵在中間動彈不得。
-
介紹飢餓的例子:資源在其中兩個或以上線程或進程相互使用,第三方線程或進程始終得不到。想像一下三個人傳球,其中兩個人傳來傳去,第三個人始終得不到。