补全:给临界区计时

👁️ 3 人浏览 💬 0 人评论 ❤️ 添加收藏

本节的东西:

model(tasks)   时间模型:每条线程 (算, 改) 两段耗时;粗锁全串行 = Σ(算+改),细锁算并行改串行 = max(算) + Σ改;交回 (粗, 细)
timed(fn, workers, work)   开 workers 条线程各跑 fn(work),交回耗时
coarse(work)   sleep(work) 关在锁里再改 total;fine(work)   sleep 在锁外,只把改关在锁里

补全 held_ratio(fn, workers, work):用 n02 的办法量每条线程持锁的时长(在 fn 里包一层计时的锁),交回「持锁总时长 ÷ 总耗时」的比值是否大于 1(粗锁:持锁总和 ≈ 总耗时;细锁:远小于)。为简单,fn 接收一个 held 列表,自己把每次持锁时长 append 进去。

提交你的答案
请登录后提交答案。
去登录
代码编辑器
Ctrl + Enter 运行
本次输入:
输出:

                        
👩‍🏫
AI
💬 题目评论

全部评论