首页 > 试题广场 >

下列哪种操作可能带来死锁?

[单选题]
下列哪种操作可能带来死锁?
  • lock(m1) lock(m2) unlock(m1) unlock(m2)
  • lock(m1) lock(m2) unlock(m2) lock(m2) unlock(m1) unlock(m2)
  • lock(m1) lock(m2) unlock(m1) lock(m1) unlock(m2) unlock(m1)
  • lock(m1) lock(m2) unlock(m1) unlock(m2) lock(m1) unlock(m1)
**死锁场景模拟(两个线程:线程A和线程B)**: 1. 线程A执行步骤1-2:成功获取 `m1` 和 `m2`。 2. 线程A执行步骤3:释放 `m1`(现在只持有 `m2`)。 3. 此时线程B介入:执行步骤1,成功获取 `m1`(因为 `m1` 空闲)。 4. 线程B尝试执行步骤2:想获取 `m2`,但 `m2` 被线程A持有,因此线程B阻塞(等待 `m2`)。 5. 线程A继续执行步骤4:想重新获取 `m1`,但 `m1` 被线程B持有,因此线程A阻塞(等待 `m1`)。 6. 结果:线程A等待 `m1`(被B持有),线程B等待 `m2`(被A持有),**互相等待,形成死锁循环**。 - **满足死锁条件**: - 互斥:锁 `m1` 和 `m2` 一次只能被一个线程使用。 - 持有并等待:线程A持有 `m2` 并等待 `m1`;线程B持有 `m1` 并等待 `m2`。 - 非抢占:锁不能被强制剥夺。 - 循环等待:A等B,B等A,形成循环。 - **结论**:可能带来死锁。
发表于 2025-08-13 15:29:08 回复(0)