# 信号量

> 信号量（英语：semaphore）又称为信号标，是一个同步对象，用于保持在0至指定最大值之间的一个计数值。当线程完成一次对该semaphore对象的等待（wait）时，该计数值减一；当线程完成一次对semaphore对象的释放（release）时，计数值加一。当计数值为0，则线程等待该semaphore对象不再能成功直至该semaphore对象变成signaled状态。

- ID: m06232
- 分类: business
- 领域: 管理学

## 定义

一个计数器，用来控制同时访问特定资源的线程数量。绿灯亮进，红灯亮等。脚手架作用： 流量控制阀。在管理团队时，设定信号量（如"同一时间只能做3个项目"）。当新任务来时，如果信号量已满，必须排队或拒绝，而不是强行塞入导致拥堵。

## 机制

由Dijkstra提出，是一个受原子操作保护的计数器：P（wait，减1，若<0则阻塞）、V（signal，加1，若有等待则唤醒）。用于互斥（二值信号量=锁）与计数资源（N值信号量控制并发数）。核心是"在竞争下安全地协调访问"。

## 练习

1）识别受限资源与最大并发许可数；2）进入前P操作获取许可，离开后V操作释放；3）用二值信号量保护临界区互斥；4）注意配对与顺序以防死锁（按固定顺序获取多信号量）。

## 脚手架用法

流量控制阀。在管理团队时，设定信号量（如"同一时间只能做3个项目"）。当新任务来时，如果信号量已满，必须排队或拒绝，而不是强行塞入导致拥堵。

[阅读网页](https://thinkingmodels.site/entries/detail/m06232)
