将信号量作为唯一同步基元的倒计时锁存器



谁能解释如何使用信号量对倒计时锁存器进行编程,作为唯一允许使用的同步原语。?谢谢。

倒计时闩锁允许您等待闩锁,直到其当前计数减少到零。这意味着你可以让一个线程等到其他线程完成一定数量的工作,每个线程在完成任何工作时都会倒计时。

信号量允许您为任务分配许可。您可能只希望有 10 个许可证可用,因此请求许可证的第 11 个任务必须等到另一个任务返回一个许可证。

因此,例如,您可以拥有一个只有 1 个许可证的信号灯,并锁定它。这将导致与同步方法/块相同的行为。返回许可证后,另一个线程可以获取它以进入锁定的块。

 sem.acquire();
 doSomeStuff();
 sem.release();

如果信号量初始化时只有 1 个许可证,则它与

synchronized(someLock) {
  doSomeStuff();
}

最新更新