在日常多线程开发中,大家应该碰到过各种形形式式的锁,比如,临界区,互斥量,信号灯等等。大家有没有好奇过,这些锁的底层是如何实现的呢?这些锁函数被调用时,系统到底发生了什么事情?他们之间有什么区别?
接下来,我们将从底层源码来讲解他们的实现,由于内容较多,我将文章的阅读顺序一一贴出,因为后面的章节可能依赖于前面章节的一些知识点,大家尽量按顺序阅读。
还有一点要说明的是,文中采用的是ReactOS的源码(一款高仿 XP 的操作系统),并非真正的 Windows-XP 源码。阅读这些文章前,我认为大家是已经知道对应的锁函数是怎么使用的,因此不会进行 demo 讲解。相关文章地址如下: