补全:太细会超卖
用 conc_03 的调度模拟器验「太细」:库存 1,两条线程「读、检查」一把锁、「减、写」另一把锁。补全 split()(两段各 locked)和 whole()(整段一个 locked),数所有交
补全:把耗时的活挪出锁
本节的东西: model(tasks) 时间模型:每条线程 (算, 改) 两段耗时;粗锁全串行 = Σ(算+改),细锁算并行改串行 = max(算) + Σ改;交回 (粗, 细) timed(fn
真的量一次
本节的东西: model(tasks) 时间模型:每条线程 (算, 改) 两段耗时;粗锁全串行 = Σ(算+改),细锁算并行改串行 = max(算) + Σ改;交回 (粗, 细) timed(fn
时间模型
本节的东西: model(tasks) 时间模型:每条线程 (算, 改) 两段耗时;粗锁全串行 = Σ(算+改),细锁算并行改串行 = max(算) + Σ改;交回 (粗, 细) timed(fn
太细是什么
上面:整段关在锁里,三条排成一列 下面:只把一小截关在锁里,三条一起走 「锁太细」的典型错误是【0】。
太粗是什么
上面:整段关在锁里,三条排成一列 下面:只把一小截关在锁里,三条一起走 「锁太粗」指的是【0】。
补全:连接池
本节的东西: Gate(n) 最多 n 个同时在里面:Semaphore(n);顺便用一把小锁维护 inside / peak(峰值) run_gate(n, workers, hold) w
补全:用信号量当信号
本节的东西: Gate(n) 最多 n 个同时在里面:Semaphore(n);顺便用一把小锁维护 inside / peak(峰值) run_gate(n, workers, hold) w
补全:限流的下载池
本节的东西: Gate(n) 最多 n 个同时在里面:Semaphore(n);顺便用一把小锁维护 inside / peak(峰值) run_gate(n, workers, hold) w
有界信号量多放会怎样
本节的东西: Gate(n) 最多 n 个同时在里面:Semaphore(n);顺便用一把小锁维护 inside / peak(峰值) run_gate(n, workers, hold) w