只读要不要锁
贯穿 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。