补全:多对多验总数
(每道题开头都有同一段:上面的有界队列。)
贯穿全条的有界队列(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),消费者见毒丸就退 → (消费到的真数据数, 是否都退出了)补全 check_mpmc(nprod, ncons, per):调 run_mpmc 跑一遍,交回 "总数/是否不重不漏"。2 生产者、3 消费者、每人 6 个:
全部评论