编程基础篇 · 线性结构:你天天在用

队列:Agent 的活是排着队干的

上一课的栈是「后进先出」,这一课把方向掉个头:先进先出,一头进、另一头出——就是食堂打饭的那条队。别嫌它朴素,AI 服务能扛住一万个人同时提问、Agent 能有条不紊地干完一串任务,靠的都是这条队。这一课你来当调度员:亲手开动一条流水线,把它玩到积压、再救回来

上手 · 你来当调度员

左边的用户不停发请求,请求排进中间的队列,右边的 Agent 工人从出口那头按顺序取走处理(先来的先办)。流水线滚到这里会自己开动。玩法:先把「请求量」拖到最大,看队列多久变红;再把「处理速度」也拉上去,看积压怎么被消化掉。

👥
用户请求
生产者
(队列是空的)
😴
Agent 工人
消费者
0
排队中
流水线还没开动
进队 0 | 办结 0
2.0/秒
2.0/秒
灰 = 空转 | 绿 = 健康 | 红 = 积压超过 8 条
刚才那波积压,就是「削峰填谷」的现场。请求突然暴涨(峰),工人一时干不完——没关系,队列先兜住,谁也不丢、谁也不插队;等请求回落(谷),工人慢慢把队伍消化掉。要是没有这条队,超出处理能力的请求只能当场拒绝。你用 AI 高峰期偶尔转圈圈但很少直接报错,就是背后的队列在替你排着。反过来,队列长期是空的也说明工人配多了——队列长度是系统健康度最诚实的仪表盘
30 秒 · 栈 vs 队列,只差在从哪头取

同样把 A、B、C 三个元素放进去再全部取出来,一键播放,盯住两边「出来的顺序」。

🥞 栈(上一课的老朋友)

同一头进、同一头出

出来的顺序:—

🚶 队列(这一课的主角)

一头进、另一头出

出来的顺序:—
A、B、C 依次放入,再全部取出
C → B → A 和 A → B → C。两种结构的差别就这一条:从哪头取。栈从同一头取,天生适合「原路退回」(撤销、函数返回);队列从另一头取,天生适合「按先来后到办事」。收纳方式没有高低,只有合不合适。
队列在 AI 世界里的真身
📋

Agent 的 todo list

Agent 把任务拆成一串子任务后,就是塞进队列按顺序干:查资料 → 写初稿 → 自查。先计划的先执行,不跳步、不遗漏——这份条理不是智能,是队列。

🚦

API 限流排队

模型 API 每分钟只接受固定次数的调用,超出的请求不是被扔掉,而是排进队列等下一个窗口。你的程序偶尔「慢半拍才返回」,多半是在队里等。

📮

消息队列

大系统里服务之间不直接喊话,而是把活写成消息丢进队列,对方按自己的节奏取。这就是刚才流水线的工业级版本,行话叫消息队列(Kafka、RabbitMQ 都是它)。

✅ 这一课想和你分享的