死锁:两个程序员抢一个会议室,谁也不让谁

📅 2026/7/31 20:16:38 👁️ 阅读次数 📝 编程学习
死锁:两个程序员抢一个会议室,谁也不让谁

死锁:两个程序员抢一个会议室,谁也不让谁

话说某公司有两个程序员:小明和小刚。

周一早上,两人都想开会。小明占了会议室A,想用会议室B;小刚占了会议室B,想用会议室A。两人都在等对方让出会议室,谁也不肯先放手。

于是……会议开不成了,两个人就这样僵持着,大眼瞪小眼。

这就是死锁(Deadlock)。

一、什么是死锁?

死锁是指两个或多个进程/线程在运行过程中,因为互相持有对方需要的资源而造成互相等待的现象,如果没有外力干预,它们将一直僵持下去。

正常情况: 小明:我要用会议室B → 申请 → 用完了归还 → 释放 小刚:我要用会议室A → 申请 → 用完了归还 → 释放 死锁情况: 小明:会议室A我占了,会议室B谁占着? 小刚占着呢,等他释放! 小刚:会议室B我占了,会议室A谁占着? 小明占着呢,等他释放! 结果:互相等待,永远卡住!

二、死锁的四个必要条件

死锁发生必须同时满足以下四个条件,缺一不可:

1. 互斥条件

资源一次只能被一个进程使用。

会议室A同时只能一个人用 会议室B同时只能一个人用

2. 占有并等待条件

进程在持有资源的同时,还请求其他资源。