补全:太细会超卖

补全:太细会超卖

用 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

阅读更多 →