
死锁:两个程序员抢一个会议室,谁也不让谁话说某公司有两个程序员:小明和小刚。周一早上,两人都想开会。小明占了会议室A,想用会议室B;小刚占了会议室B,想用会议室A。两人都在等对方让出会议室,谁也不肯先放手。于是……会议开不成了,两个人就这样僵持着,大眼瞪小眼。这就是死锁(Deadlock)。一、什么是死锁?死锁是指两个或多个进程/线程在运行过程中,因为互相持有对方需要的资源而造成互相等待的现象,如果没有外力干预,它们将一直僵持下去。正常情况: 小明:我要用会议室B → 申请 → 用完了归还 → 释放 小刚:我要用会议室A → 申请 → 用完了归还 → 释放 死锁情况: 小明:会议室A我占了,会议室B谁占着? 小刚占着呢,等他释放! 小刚:会议室B我占了,会议室A谁占着? 小明占着呢,等他释放! 结果:互相等待,永远卡住!二、死锁的四个必要条件死锁发生必须同时满足以下四个条件,缺一不可:1. 互斥条件资源一次只能被一个进程使用。会议室A同时只能一个人用 会议室B同时只能一个人用2. 占有并等待条件进程在持有资源的同时,还请求其他资源。