16. 并发控制:同步 (2)

同步实现了 happens-before 的关系,使程序能确保到达一个确定的 “已知简单状态”,从而实现并发控制。在同步的过程中,自然存在的 ”同步达成条件“ 带来了条件变量机制。

本讲内容:E. W. Dijkstra 发明的另一种共享内存系统中常用的同步方法:信号量。

16.1 信号量

16.2 用 “互斥” 实现同步

16.3 信号量、条件变量与同步

16.4 总结

Take-away messages: 信号量可以看做是互斥锁的一个 “推广”,可以理解成游泳馆的手环、停车场的车位、餐厅的桌子和袋子里的球,通过计数的方式实现同步——在符合这个抽象时,使用信号量能够带来优雅的代码。但信号量不是万能的——理解线程同步的条件才是真正至关重要的。

📚阅读材料

教科书 Operating Systems: Three Easy Pieces

  • 第 31 章 - Semaphores