只读要不要锁

贯穿 n07 的程序(一个小仓库),每行标了它碰的数据: 1 total = total + amount # 共享 total,写 2 log = [] # 本地 3

开始练习 →

逐行标记

贯穿 n07 的程序(一个小仓库),每行标了它碰的数据: 1 total = total + amount # 共享 total,写 2 log = [] # 本地 3

开始练习 →

检查和动作要不要在一起

贯穿 n07 的程序(一个小仓库),每行标了它碰的数据: 1 total = total + amount # 共享 total,写 2 log = [] # 本地 3

开始练习 →

补全:标出要保护的行

贯穿 n07 的程序(一个小仓库),每行标了它碰的数据: 1 total = total + amount # 共享 total,写 2 log = [] # 本地 3

开始练习 →

补全:按数据分组

贯穿 n07 的程序(一个小仓库),每行标了它碰的数据: 1 total = total + amount # 共享 total,写 2 log = [] # 本地 3

开始练习 →

补全:把标记变成锁

(每道题开头都有同一段:上面的模拟器。判题机要确定的答案,所以本条用「调度表」代替真线程的运气。) 贯穿 n07 的程序(一个小仓库),每行标了它碰的数据: 1 total = total + amount # 共享 t

开始练习 →

补全:漏掉一处会怎样

(每道题开头都有同一段:上面的模拟器。判题机要确定的答案,所以本条用「调度表」代替真线程的运气。) 补全 leak_test(protect_fn):两条线程各是 inc + inc(两个读-改-写);用 protect_fn 保护后跑所有

开始练习 →

真机上第一步做什么

拿到一个「据说有竞争」的多线程脚本,真机上第一步是【0】。

开始练习 →

从记录里认出丢更新

给真机上的计数器加了打印,每一步记一行。数一数记录里「两条线程读到同一个值」发生了几次(每个值算一次): log = ["T0 read 0", "T1 read 0", "T0 write

开始练习 →

跑几次,把结果记下来

场景:~/计数/计数.py 让几条线程各把一个共享的计数器加若干次,最后打印计数器的值(说明.txt 里有线程数和次数)。 任务:把它跑至少 5 次,每次打印出来的数一行一个追加到 ~/结果.txt(只要数字)。记完运行 ~/check。

开始练习 →