通信系統軟件開發-1、幾個概念的區別

1、活鎖
活鎖(livelock)
活鎖指的是任務或者執行者沒有被阻塞,由於某些條件沒有滿足,導致一直重複嘗試,失敗,嘗試,失敗。 活鎖和死鎖的區別在於,處於活鎖的實體是在不斷的改變狀態,所謂的“活“, 而處於死鎖的實體表現爲等待;活鎖有可能自行解開,死鎖則不能。
活鎖可以認爲是一種特殊的飢餓。 下面這個例子在有的文章裏面認爲是活鎖。實際上這只是一種飢餓。因爲沒有體現出“活”的特點。 假設事務T2再不斷的重複嘗試獲取鎖R,那麼這個就是活鎖。如果事務T1封鎖了數據R,事務T2又請求封鎖R,於是T2等待。T3也請求封鎖R,當T1釋放了R上的封鎖後,系統首先批准了T3的請求,T2仍然等待。然後T4又請求封鎖R,當T3釋放了R上的封鎖之後,系統又批准了T4的請求……T2可能永遠等待。
活鎖應該是一系列進程在輪詢地等待某個不可能爲真的條件爲真。活鎖的時候進程是不會blocked,這會導致耗盡CPU資源。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章