主线程怎么等它们结束
主线程要等生产者、消费者都干完再退出,靠的是【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)在生产者-消费者里解决的是【0】。
wait_for 做什么
cond.wait_for(条件) 干的事是【0】。
为什么醒来要重查条件
被叫醒之后要重新检查条件(用 while / wait_for 而不是 if),因为【0】。
满时生产者要等
(每道题开头都有同一段:上面的有界队列。) 贯穿全条的有界队列(Condition 同步:满了 put 等、空了 get 等,等的时候把锁交出去): box = Box(cap) 一个最多装 cap 个的队列 box.
空时消费者要等
(每道题开头都有同一段:上面的有界队列。) 贯穿全条的有界队列(Condition 同步:满了 put 等、空了 get 等,等的时候把锁交出去): box = Box(cap) 一个最多装 cap 个的队列 box.