为什么信号量?

Onk*_*jan 4 operating-system semaphore ipc

为什么在使用简单变量实现相同功能时使用二进制信号量?

Wil*_*ung 6

因为信号量不是一个简单的变量,所以它是一个比它更大的构造.

具体来说,使用计数信号量(二进制信号量实际上是1的计数),可以阻止尝试将信号量增加到其最大值以上的任何进程/线程.

信号量还有额外的功能,它们的状态是"原子地"改变的,这意味着底层存储器被逻辑包围,以确保CPU缓存等被刷新,并且当值改变时,它被改为"每个人" .这在现代多核处理器上尤为重要.

当您尝试防止共享资源过度使用时,信号量适合使用.二进制信号量非常适合一次只能由一个进程/线程使用的资源.