补全:什么时候该等
(每道题开头都有同一段:上面的有界队列。) 贯穿全条的有界队列(Condition 同步:满了 put 等、空了 get 等,等的时候把锁交出去): 补全 should_wait_put(items, cap):put 在队列满(元素数 &
补全:空了就等的 get
(每道题开头都有同一段:上面的有界队列。) 贯穿全条的有界队列(Condition 同步:满了 put 等、空了 get 等,等的时候把锁交出去): box = Box(cap) 一个最多装 cap 个的队列 box.
⚠️ 自己写:醒来不重查会怎样
(每道题开头都有同一段:上面的有界队列。) 贯穿全条的有界队列(Condition 同步:满了 put 等、空了 get 等,等的时候把锁交出去): 两个消费者同时被叫醒、只有一个数据:不重查(硬 pop)的那个会对空 pop 报错。补全
背压是什么
缓冲箱满了,三格都占着 新产出的停在门口,等有空位才进 「背压」(backpressure)指的是【0】。
无界队列的风险
缓冲箱满了,三格都占着 新产出的停在门口,等有空位才进 用一个没有容量上限的队列,最大的风险是【0】。
有界和无界怎么选
队列该有界还是无界,取决于【0】。
无界队列一直涨
本节的积压离散模型(纯算术,不靠真线程): backlog(prod, cons, ticks) 无界队列:每 tick 进 prod 个、出 cons 个 → 每 tick 结束时队列长度(prod > cons 就一直涨) b
有界队列的峰值和背压
本节的积压离散模型(纯算术,不靠真线程): backlog(prod, cons, ticks) 无界队列:每 tick 进 prod 个、出 cons 个 → 每 tick 结束时队列长度(prod > cons 就一直涨) b
补全:无界积压模型
本节的积压离散模型(纯算术,不靠真线程): 补全 grow(prod, cons, ticks):每 tick 进 prod 个、出 cons 个(出不超过队里的),交回每 tick 结束时的队列长度。进 4 出 1、跑 4 个 tick:
补全:有界满了就丢
本节的积压离散模型(纯算术,不靠真线程): backlog(prod, cons, ticks) 无界队列:每 tick 进 prod 个、出 cons 个 → 每 tick 结束时队列长度(prod > cons 就一直涨) b