发生死锁包括了4个条件:

  1. 互斥条件,资源每次只能被一个线程使用。
  2. 请求和保持,使用者不放弃资源。
  3. 不可剥夺,其他使用者不能强制获取资源。
  4. 循环等待。以两个使用者为例,互相持有对方需求的资源,且满足上面三个条件。则形成都不放弃资源,都不能获取到对方的资源。这种循环等待可以扩展到N个使用者的情景。