互斥锁用于保护关键部分。假设已经在互斥锁上执行了一次向下操作,并且执行该操作的线程在CS中,其他10个线程就在它后面并对互斥锁执行操作,使自己进入睡眠状态。当第一个线程退出临界区并在互斥锁上启动时,所有10个线程都会唤醒并恢复它们即将完成的操作,即进入临界区?那么这并不意味着所有10个人可能会同时在关键部分结束吗?
答案 0 :(得分:1)
不,只有一个线程将被唤醒并取得互斥锁的所有权。其余人将保持睡眠状态。醒来的那个线程通常是不确定的。
以上是概括,每个系统的实施细节都不同。例如,在Java中比较Object#notify()和Object#notifyAll()。