Single Threaded Execution 死锁条件

      所谓死锁,是指两个线程分别获取了锁定,互相等待另一个线程解除锁定的现象。

      举例,假设A和B同吃一个大盘子所盛放的意大利面。盘子旁边只有一只汤匙和一只叉子,吃面时需要同时用到汤匙与叉子。此时,汤匙被A拿去了,叉子却又被B拿去了。A和B一直等待对方把餐具放下。像A和B这样面面相窥的现象就叫死锁。

 

(1)具有多个SharedResource参与者。

(2)线程锁定一个SharedResource时,还没解除前就去锁定另一个SharedResource。

(3)获取SharedResource参与者得顺序不固定(和SharedResource参与者是对等的)。

 

举例:

(1)多个SharedResource参与者,相当于汤匙与叉子。

(2)锁定某个SharedResource参与者后,就去锁定其他SharedResource。就相当于或者汤匙想要获取对方的叉子,或者反之。

(3)SharedResource角色是对等的。也就是说汤匙与叉子没有优先级。

 

     三个条件破坏其一就可以避免死锁的发生。

 

你可能感兴趣的:(thread)