当互斥锁可用时,在哪里使用二进制信号量?

dej*_*avu 6 c operating-system mutex semaphore

在阅读二进制信号量和互斥量时,我发现了以下差异:

两者都可以具有值0和1,但是互斥锁可以由获取互斥锁的同一线程解锁.其获取互斥锁的线程可以在情况下更高的优先级进程想获得相同的互斥体,而这不符合二进制信号的情况下,优先级反转.

那么我应该在哪里使用二进制信号量?谁能引用一个例子?

编辑:我想我已经找到了两者的工作原理.基本上二进制信号量提供同步,而互斥量提供锁定机制.我从高尔文操作系统的书中读到了一些例子,以便更清楚.

R..*_*R.. 5

我发现二进制信号量非常有用的一种典型情况是线程初始化,其中线程将从父线程拥有的结构读取.父线程需要等待新线程从结构中读取共享数据,然后才能让结构的生命周期结束(例如,通过保留其范围).使用二进制信号量,您所要做的就是将信号量值初始化为零,并让子进程在父进程等待时将其发布.没有信号量,你需要一个互斥和条件变量以及更加丑陋的程序逻辑来使用它们.