补全:连接池
本节的东西:
Gate(n) 最多 n 个同时在里面:Semaphore(n);顺便用一把小锁维护 inside / peak(峰值)
run_gate(n, workers, hold) workers 条线程各进一次 Gate 待 hold 秒,交回峰值补全 Pool:n 个「连接」(就是编号 0..n-1);take() 用 BoundedSemaphore 等到有空位再从空闲列表拿一个,give(c) 放回去再 release。四条线程各 take-sleep-give 一次,交回 (最多同时借出几个 <= n, 最后空闲个数)。
全部评论