操作系统面试题(二十):导致线程出现死锁的情况

操作系统面试题(二十):导致线程出现死锁的情况
操作系统面试题(二十):导致线程出现死锁的情况


线程死锁

  1. 互斥(Mutual Exclusion)

一次只能有一个线程使用该资源,利用互斥锁锁住。如果另一个线程请求该资源,则必须延迟请求,知道该线程释放资源为止

  1. 保持并等待(Hold and wait)

一个线程占有至少一个资源,并且正等待获取其他线程所持有的资源

  1. 无抢占(No Preemption)

资源不能被抢占,即在线程完成其任务之前,只能由它占有该资源,不允许中途被其他线程抢走

  1. 循环等待(Circular Wait)

一组等待线程{P0,P1,P2……Pn},其中P0等待P1的资源,P1等待P2的资源……Pn等待P0的资源,形成了死循环