9. 并发控制:同步 (1)

背景回顾:我们已经了解如何通过 “不可优化、保证顺序” 的原子指令实现自旋锁,并在操作系统内核中借助关中断机制实现互斥。然而,互斥并不总是能满足多个并发线程协作完成任务的需求。如何能便捷地让共享内存的线程协作以共同完成计算任务?

本讲内容:并发控制:同步。同步问题的定义、生产者-消费者问题、“万能” 的同步方法:条件变量。

9.1 线程同步

9.2 生产者-消费者问题与条件变量

9.3 同步机制的应用

Take-away Messages

同步的本质是线程需要等待某件它所预期的事件发生,而事件的发生总是可以用条件 (例如 depth 满足某个条件,或是程序处于某个特定的状态) 来表达。因此计算机系统的设计者实现了条件变量,将条件检查和临界区 “放在一起”,以实现线程间的同步。

课后习题/编程作业

📚阅读材料

教科书 Operating Systems: Three Easy Pieces

  • 第 29 章 - Locked Data Structures
  • 第 30 章 - Condition Variables