死鎖 活鎖 飢餓

2021-07-31 04:30:32 字數 591 閱讀 1766

1.活鎖指的是任務或者執行者沒有被阻塞,由於某些條件沒有滿足,導致一直重複嘗試,失敗,嘗試,失敗。

2.活鎖和死鎖的區別在於,處於活鎖的實體是在不斷的改變狀態,所謂的「活」, 而處於死鎖的實體表現為等待;活鎖有可能自行解開,死鎖則不能。

3.活鎖可以認為是一種特殊的飢餓。 下面這個例子在有的文章裡面認為是活鎖。實際上這只是一種飢餓。因為沒有體現出「活」的特點。 假設事務t2再不斷的重複嘗試獲取鎖r,那麼這個就是活鎖。

如果事務t1封鎖了資料r,事務t2又請求封鎖r,於是t2等待。t3也請求封鎖r,當t1釋放了r上的封鎖後,系統首先批准了t3的請求,t2仍然等待。然後t4又請求封鎖r,當t3釋放了r上的封鎖之後,系統又批准了t4的請求......t2可能永遠等待。

4.活鎖應該是一系列程序在【輪詢】地等待某個不可能為真的條件為真。活鎖的時候程序是不會blocked,這會導致耗盡cpu資源。

5.活鎖、死鎖本質上是一樣的,原因是在獲取臨界區資源時,併發多個程序/執行緒宣告資源占用(加鎖)的順序不一致,死鎖是加不上就死等,活鎖是加不上就放開已獲得的資源重試(這樣才能可能自行解開,剛好放開已獲得的資源時該程序的時間片過去,它之前獲得的資源就可能給別的程序占有),單機場景活鎖不太常見。

死鎖 活鎖 飢餓

活鎖飢餓 是指兩個或兩個以上的程序 或執行緒 在執行過程中,因爭奪資源而造成的一種互相等待的現象,若無外力作用,它們都將無法推進下去。診斷要通過迴圈圖法 耗時法來判斷。通過犧牲代價最小的事務來解除死鎖。例如撤銷或掛起一些程序,以便 一些資源,再將這些資源分配給已處於阻塞狀態的程序,使之轉為就緒狀態,...

多執行緒死鎖 活鎖 飢餓

1 死鎖 所謂死鎖是指多個執行緒因競爭資源而造成的一種僵局 互相等待 若無外力作用,這些程序都將無法向前推進。理解的例子 生活中的乙個例項,2個人一起吃飯但是只有一雙筷子,2人輪流吃 同時擁有2只筷子才能吃 某乙個時候,乙個拿了左筷子,一人拿了右筷子,2個人都同時占用乙個資源,等待另乙個資源,這個時...

死鎖與活鎖的區別,死鎖與飢餓的區別

死鎖 是指兩個或兩個以上的程序 或執行緒 在執行過程中,因爭奪資源而造成的一種互相等待的現象,若無外力作用,它們都將無法推進下去。此時稱系統處於死鎖狀態或系統產生了死鎖,這些永遠在互相等待的程序稱為死鎖程序。死鎖發生的四個條件 1 互斥條件 執行緒對資源的訪問是排他性的,如果乙個執行緒對占用了某資源...