官术网_书友最值得收藏!

Livelocks

Livelocks are similar to deadlocks, in the sense that they also happen when the application can't correctly continue its execution. The difference is that during a livelock the state of the application is constantly changing, but the state changes in a way that further prevents the application from resuming normal execution.

Commonly, a livelock is explained by picturing two people, Elijah and Susan, walking in opposite directions in a narrow corridor. Both of them try to avoid the other by moving to one side: Elijah moves to the left while Susan moves to the right, but since they are walking in opposite directions, they are now blocking each other's way. So, now Elijah moves to the right, just at the same time that Susan moves to the left: once again they are unable to continue on their way. They continue moving like this, and thus they continue to block each other:

Flow chart for the example of a livelock

In this example, both Elijah and Susan have an idea of how to recover from a deadlock—each blocking the other—but the timing of their attempts to recover further obstructs their progress.

As expected, livelocks often happen in algorithms designed to recover from a deadlock. By trying to recover from the deadlock, they may in turn create a livelock. 

主站蜘蛛池模板: 华阴市| 岫岩| 平潭县| 石门县| 兴安盟| 繁昌县| 荆门市| 栖霞市| 河池市| 湖北省| 阿坝县| 丰顺县| 新和县| 易门县| 麻江县| 娱乐| 霍邱县| 大连市| 兴国县| 禹州市| 雷山县| 海口市| 赞皇县| 新巴尔虎左旗| 黄浦区| 休宁县| 涟源市| 九龙县| 晋城| 恭城| 城口县| 邵阳市| 和顺县| 通道| 广南县| 忻州市| 施秉县| 康平县| 福安市| 年辖:市辖区| 酒泉市|