补全:装起来跑
(每道题开头都有同一段:上面的有界队列。)
贯穿全条的有界队列(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),消费者见毒丸就退 → (消费到的真数据数, 是否都退出了)补全 start_pc(cap, n):起一个生产者线程放 0..n-1、一个消费者线程取 n 个,join 等它们结束,交回消费到的列表。看结果。
全部评论