几个消费者要几颗毒丸
有 3 个消费者,要让它们都停下来,得放【0】。
毒丸让大家都退出
(每道题开头都有同一段:上面的有界队列。) 贯穿全条的有界队列(Condition 同步:满了 put 等、空了 get 等,等的时候把锁交出去): box = Box(cap) 一个最多装 cap 个的队列 box.
毒丸放少了会怎样
(每道题开头都有同一段:上面的有界队列。) 贯穿全条的有界队列(Condition 同步:满了 put 等、空了 get 等,等的时候把锁交出去): box = Box(cap) 一个最多装 cap 个的队列 box.
补全:生产者放毒丸
(每道题开头都有同一段:上面的有界队列。) 贯穿全条的有界队列(Condition 同步:满了 put 等、空了 get 等,等的时候把锁交出去): box = Box(cap) 一个最多装 cap 个的队列 box.
补全:消费者见毒丸退出
(每道题开头都有同一段:上面的有界队列。) 贯穿全条的有界队列(Condition 同步:满了 put 等、空了 get 等,等的时候把锁交出去): box = Box(cap) 一个最多装 cap 个的队列 box.
补全:完整的优雅退出
(每道题开头都有同一段:上面的有界队列。) 贯穿全条的有界队列(Condition 同步:满了 put 等、空了 get 等,等的时候把锁交出去): box = Box(cap) 一个最多装 cap 个的队列 box.
⚠️ 自己写:只设标志不放毒丸
(每道题开头都有同一段:上面的有界队列。) 毒丸是一次 put,一定能把卡在 get 上的消费者叫醒、让它退出;「设个标志」不行——队列空时消费者阻塞在 get 上,根本执行不到「检查标志」。补全 exit_result(kind, que
真机上怎么验它对了
真机上确认一个生产者消费者程序「对了」,最靠谱的做法是【0】。
从现象认队列的毛病
真机上四种现象各对应一种毛病。把现象和毛病配对,打印四个字母: signs = { "消费总数比生产少": "A", "程序永远不退出": "B"
把它跑起来看结果
场景:~/pc/跑.py 是一个完整的生产者消费者程序(用 queue.Queue + 线程),说明里写了生产多少个。 任务:把它跑起来,看它打印「消费了 N 个」,运行 ~/check(它会自己再跑几次核对总数)。 可操作范围:只在分给你