软考笔记0820-1
信号量(Semaphore)访问互斥资源时的初始值取决于你想实现的同步目标:
1. 互斥锁(Mutex)场景
-
访问的是单个资源,一次只能被一个线程/进程使用。
-
对应的信号量初始值通常是 1:
1表示资源可用。- 当一个线程获取资源时,信号量减 1 → 变为 0 → 其他线程必须等待。
- 释放资源时,信号量加 1 → 变为 1。
初始值 = 1 (常用于互斥锁)
2. 计数信号量(Counting Semaphore)
-
如果有 多个相同的资源(比如 5 个打印机),初始值设置为资源数量:
- 初始值 = 资源总数
- 每获取一个资源,信号量减 1;释放时加 1。
初始值 = 资源数量 N
✅ 总结
- 互斥资源(一个资源) → 信号量初始值 = 1
- 多个可用资源 → 信号量初始值 = 资源数量

浙公网安备 33010602011771号