这是本技能的模拟器版:没有真正的线程,也不计时。线程是一小串步骤,调度说明下一步轮到谁,而你写的机器负责执行它们,于是并发缺陷变成一串可以打印、可以重放的线程编号。每讲用小例子和它的输出讲一个概念,随后带评分的实验在同一台机器上继续扩展。你将学会看清一次交错如何丢失一次更新,枚举一个小程序的所有调度,说明无锁队列保证什么,并在所有调度上证明行情分发的某个不变量。
熟悉 Python 的函数、列表和字典就够了;不需要 C 或 C++,因为这台机器是你自己写的模拟器。缓存局部性技能有助于理解伪共享和缓存行,但不是必需的。