课程简介
逐字稿来源状态:Official FAQ confirms that 6.102 has no lectures and active-learning classtimes are not recorded.
reading-14 · 并发正确性取决于交错
已获用户批准接入 · 来源范围见本文说明。
来源:MIT 6.102 Spring 2026 · Reading 14: Concurrency。依据官方阅读正文整理,非课堂逐字稿;下方示例与练习为本地自写教学示例。
核心概念与推理
并发让多个计算在时间上重叠;进程隔离执行环境,线程通常共享进程内存,Worker 更接近轻量进程。共享内存与消息传递是不同通信模型。竞态出现于结果依赖不可控事件顺序,单次成功不能排除它。读—改—写不是天然原子操作,多步更新可能被其他执行交错。设计应减少共享可变状态或集中其所有权,不能靠增加等待时间来证明正确。
具体示例
// 两个执行单元都做:
const old = balance;
balance = old + 1;
// 若都读到 200,两次增加后可能仍为 201交错顺序为 A 读200、B读200、A写201、B写201。这是明确的丢失更新反例;单线程同步执行时不会发生这类交错,但 Worker 共享内存或异步拆分操作需要重新分析。
关键机制补充
消息传递把可变状态收进接收方,也需要考虑协议原子性。两个单独消息构成的“读取后修改”仍可被其他消息插入。并发和并行不等同:计算可在单核上交替推进,也可在多核上同时执行;竞态关注的是允许的时序是否影响规格,而不只是是否用了线程。
常见误区
把异步与多线程混为一谈;认为多核必然提升所有任务;通过 sleep 消除竞态。
练习与检查点
列出一次存款与一次取款的读写交错,标明哪些违背余额规格,再提出共享状态或消息所有权方案。
检查答案时必须写清前提、推导和一个反例;仅给出术语名称不足以说明理解。可回到官方文中的 reading exercises 检验,再记录与自己最初判断的差异。
原文阅读范围
Concurrency, Two models for concurrent programming, Processes, threads, time-slicing, Threads in Python, Workers in TypeScript, Shared memory example, Interleaving, Race condition, Message passing example, Concurrency is hard to test and debug, Summary。
资料与边界
完整官方阅读通过上方链接查看;作业、项目及考试见 软件工程学习入口。官方 录像说明 明确:本课不设概念讲授式 lectures,课堂用于主动练习且不录像。概念材料以交互阅读提供,因此本单元不适用课堂逐字稿,也没有生成时间轴。
一百次运行正常,为什么仍不能放心
已获用户批准接入 · 来源范围见本文说明。
来源:MIT 6.102 Spring 2026 · Reading 14: Concurrency。依据官方阅读正文整理,非课堂逐字稿;下方示例与练习为本地自写教学示例。
从一个具体问题开始
账户演示程序在本机总得到正确余额,换一台机器就出现偏差。处理器调度、网络延迟和其他任务改变交错,测试无法枚举全部环境。并发的可靠性必须来自允许交错下仍成立的设计。
看清问题背后的结构
并发让多个计算在时间上重叠;进程隔离执行环境,线程通常共享进程内存,Worker 更接近轻量进程。共享内存与消息传递是不同通信模型。竞态出现于结果依赖不可控事件顺序,单次成功不能排除它。读—改—写不是天然原子操作,多步更新可能被其他执行交错。设计应减少共享可变状态或集中其所有权,不能靠增加等待时间来证明正确。
用一个小例子检验理解
// 两个执行单元都做:
const old = balance;
balance = old + 1;
// 若都读到 200,两次增加后可能仍为 201交错顺序为 A 读200、B读200、A写201、B写201。这是明确的丢失更新反例;单线程同步执行时不会发生这类交错,但 Worker 共享内存或异步拆分操作需要重新分析。
关键机制补充
消息传递把可变状态收进接收方,也需要考虑协议原子性。两个单独消息构成的“读取后修改”仍可被其他消息插入。并发和并行不等同:计算可在单核上交替推进,也可在多核上同时执行;竞态关注的是允许的时序是否影响规格,而不只是是否用了线程。
把概念放回工程决策
先画出执行单元、可变数据及消息,再识别每个多步操作的边界。尽量让客户只看到完成后的抽象操作,而无需自行协调内部步骤。
容易走偏的地方是:把异步与多线程混为一谈;认为多核必然提升所有任务;通过 sleep 消除竞态。这些问题不能通过记住一个术语自动解决,需要用具体调用者、输入和状态来检查。
亲手做一次
列出一次存款与一次取款的读写交错,标明哪些违背余额规格,再提出共享状态或消息所有权方案。
先独立写下判断,再对照官方阅读;这篇文章是阅读解释和练习入口,未包含原课堂的互动、时间轴或未公开内容。
中文逐字稿
Official FAQ confirms that 6.102 has no lectures and active-learning classtimes are not recorded.
英文逐字稿
Official FAQ confirms that 6.102 has no lectures and active-learning classtimes are not recorded.