补全:消费者
(每道题开头都有同一段:上面的有界队列。)
贯穿全条的有界队列(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),消费者见毒丸就退 → (消费到的真数据数, 是否都退出了)补全 consumer(box, n, out):从 box 取 n 个、依次 append 到 out。配好的生产者会放 0..n-1;看取到什么。
全部评论