补全:把耗时的活挪出锁
本节的东西:
model(tasks) 时间模型:每条线程 (算, 改) 两段耗时;粗锁全串行 = Σ(算+改),细锁算并行改串行 = max(算) + Σ改;交回 (粗, 细)
timed(fn, workers, work) 开 workers 条线程各跑 fn(work),交回耗时
coarse(work) sleep(work) 关在锁里再改 total;fine(work) sleep 在锁外,只把改关在锁里slow(work) 把 sleep 和更新都关在锁里。补全 quick(work):sleep 在锁外、只把更新关在锁里;两版各三条线程量一次,打印 quick 是否更快、两版各加的次数。
全部评论