第七十章:信号量(进阶)
TL;DR
- 信号量用一个计数表示可用资源数,等待会减计数,通知会加计数。
正文
计数信号量为零时,wait 使线程睡眠;资源归还时,signal 增加计数并唤醒等待者。它既能表示一把锁,也能表示三个空闲连接之类的有限资源。
信号量很紧凑,但难从代码看出它在保护什么;错误的等待、通知顺序也很难排查。
思考题
初始值为 3 的信号量可表示什么?
小结
- 信号量把资源数量与等待队列结合。
思考题答案(仅供参考)
可表示同时最多允许三人使用的同类资源。
协议
本文采用 CC BY-NC-SA 4.0 协议发布。