互斥锁和互斥解锁

MUTEX LOCK and MUTEX UNLOCK

在两个进程恰好同时到达的极其不幸的情况下会发生什么。这不太可能,但概率上会不时发生。更巧合的是,我们假设锁是打开的,这样两个进程都能找到可用的锁。怎么了?

锁定互斥量是一个原子过程,因此即使两个线程设法在恰好同时请求互斥量,一个其中一个会成功,另一个会失败——也就是说,一个会锁定互斥锁,另一个不会。

任何其他结果都意味着互斥量已彻底且不可挽回地损坏——也就是说,它根本不是真正的互斥量。

互斥使用原子操作实现。不同的处理器架构以不同的方式实现这一点,但无论处理器做什么,在较低级别上总是有一个总线仲裁器硬件必须为所有同时的内存访问选择正确的顺序。

因此,即使两个处理器在完全相同的时刻访问同一个互斥量,总线仲裁器也会选择谁是第一个,谁是第二个。

最后,没有任何事情发生在完全相同的时间 - 一切都是有序的。


您可以在

阅读更多关于内存访问的工作原理

简而言之,处理器不直接访问内存,而是要求内存控制器来执行此操作。当两个处理器同时要求存储设备做某事时,它必须先选择其中一个。