谁能解释如何使用信号量对倒计时锁存器进行编程,作为唯一允许使用的同步原语。?谢谢。
倒计时闩锁允许您等待闩锁,直到其当前计数减少到零。这意味着你可以让一个线程等到其他线程完成一定数量的工作,每个线程在完成任何工作时都会倒计时。
信号量允许您为任务分配许可。您可能只希望有 10 个许可证可用,因此请求许可证的第 11 个任务必须等到另一个任务返回一个许可证。
因此,例如,您可以拥有一个只有 1 个许可证的信号灯,并锁定它。这将导致与同步方法/块相同的行为。返回许可证后,另一个线程可以获取它以进入锁定的块。
sem.acquire();
doSomeStuff();
sem.release();
如果信号量初始化时只有 1 个许可证,则它与
:synchronized(someLock) {
doSomeStuff();
}