生产者 — 消费者 · 逐行执行

并发逐行高亮。两类阻塞用不同样式区分:同步阻塞(等 empty/full 资源)= 琥珀 + 睡眠呼吸;互斥阻塞(等 mutex 锁)= 紫色 + 浮现挂锁。

就绪
生产者 producer
缓冲区(循环队列 n = 4
mutex 锁
生产者
空闲
消费者
空闲 · mutex = 1
empty
4
full
0
mutex
1
就绪
消费者 consumer
就绪。点“下一步”单步执行,或“自动播放”。
同步阻塞:等 empty/full(缓冲满/空) 互斥阻塞:等 mutex(锁被对方占)

代码里 empty/full 着琥珀(同步信号量,直接制约),mutex 着紫色(互斥锁,间接制约)。阻塞时颜色一致:等资源→琥珀睡眠态,等锁→紫色挂锁态。信号量为负数表示有进程正排队等待。