目录
信号量
信号量(semaphore)是一种常被用于多线程或多进程场景中的同步机制,用于保证多线程或多进程对共享数据的读/写操作是顺序的。
信号量的本质上是一个计数器,维护着一个 Value:
- 当 value > 0 时,信号量表示有可用的资源。
- 当 value < 0 时,信号量表示所有的资源都已经被占用了。
二元信号量
二元信号量(Binary Semaphore),即:计数器维护的 Value 只有 0 和 1 着两种可能,以此来实现互斥,所以也称为互斥信号量。
- 1:表示可以访问资源。
- 0:表示不能访问资源。
需要注意的是,二元信号量只能用于实现互斥,无法实现同步。如果需要实现线程间的同步,可以使用计数信号量(Counting Semaphore)。
另外,二元信号量的使用应尽量避免死锁问题的发生,即:避免出现多个线程相互等待的情况。
semaphore.h 库
C 语言可以使用 se