同步实现了 happens-before 的关系,使程序能确保到达一个确定的 “已知简单状态”,从而实现并发控制。在同步的过程中,自然存在的 ”同步达成条件“ 带来了条件变量机制。
本讲内容:E. W. Dijkstra 发明的另一种共享内存系统中常用的同步方法:信号量。
Take-away messages: 信号量可以看做是互斥锁的一个 “推广”,可以理解成游泳馆的手环、停车场的车位、餐厅的桌子和袋子里的球,通过计数的方式实现同步——在符合这个抽象时,使用信号量能够带来优雅的代码。但信号量不是万能的——理解线程同步的条件才是真正至关重要的。