☕ 架构师的白话因果律

教材洋洋洒洒几千字,底层不过是“公厕钥匙”

很多同学一看到操作系统的 P、V 原语操作,思维立刻陷入混乱:一会儿大于零,一会儿小于零,还要死记外语缩写。

其实在并发与多线程的世界里,信号量 S 就是一个“公共卫生间的门锁与钥匙”:

  • • S > 0:代表有空位。如 S = 2,意味着里面还有 2 个空位,无需排队直接进!
  • • S = 0:正好满员。里面的资源全占满了,但门外暂时还没有人排队等待。
  • • S < 0:不仅满了,门外还排起了长队!其绝对值 |S|,就是此时此刻在队列中排队挂起(阻塞)的人数。

P 是“进门拿钥匙”(S 减 1),没钥匙就原地挂起睡眠;
V 是“出门还钥匙”(S 加 1),顺手叫醒门外队列中第一个排队的人。

[物理仿真沙箱] 信号量 S = 2
小人申请资源(P),释放资源(V),S 直观反映空闲与排队人数