【发布时间】:2018-06-16 13:12:40
【问题描述】:
鉴于这两个线程试图更新全局变量“var”。
线程A
- MutexAcquire()
- ++var
- MutexRelease()
线程 B
- MutexAcquire()
- ++var
- MutexRelease()
接下来的场景会发生什么,
- 线程 A 执行 MutexAcquire()
- OS 将上下文切换到线程 B
- 现在线程 B 一直在等待线程 A 释放 Mutex。但是线程 A 被操作系统关闭。
这不是典型的死锁问题吗?现代计算机如何解决这种情况。谁保证操作系统在释放 Mutex 之前不会切换线程 A?
【问题讨论】:
标签: operating-system mutex semaphore