补全:多个生产者
(每道题开头都有同一段:上面的有界队列。)
贯穿全条的有界队列(Condition 同步:满了 put 等、空了 get 等,等的时候把锁交出去):
box = Box(cap) 一个最多装 cap 个的队列
box.put(x) 满了就等到有空位,再放进去、叫醒等着取的
box.get() 空了就等到有东西,再取最前面的、叫醒等着放的
run_pc(cap, n) 一个生产者放 0..n-1,一个消费者取 n 个 → 消费到的顺序(FIFO,确定)
run_mpmc(cap, 生产者数, 消费者数, 每人几个) → (消费总数, 消费集合==生产集合) 多对多只问聚合量
run_poison(cap, n, 消费者数) 生产完放几颗毒丸(None),消费者见毒丸就退 → (消费到的真数据数, 是否都退出了)补全 make_producers(box, nprod, per):造 nprod 个生产者线程,第 k 个放 k*100+0 .. k*100+(per-1),交回线程列表(别 start)。用 run 装起来验总数:
全部评论