定义
信号量 (Semaphore) 是一种用于多进程或多线程环境中控制共享资源访问的同步原语,它通过原子操作记录资源数量,从而实现互斥或同步。
直观理解
信号量就像是一个停车场门口的电子显示屏,显示还有多少个空车位。车进场(P 操作)车位减一,车出场(V 操作)车位加一。如果显示 0,后面的车就得在门口排队等候,直到有车离开。
关键点
- 互斥信号量 (Binary Semaphore):值只能为 0 或 1,类似于互斥锁(Mutex),用于保护单一临界区。
- 计数信号量 (Counting Semaphore):值可以大于 1,用于管理具有多个可用实例的资源池。
- 原子性:
P和V操作必须是不可中断的原子操作,以防止竞态条件。