任何人都可以解释如何使用信号量作为唯一允许使用的同步原语来编程倒计时锁存器吗?谢谢。
最佳答案
倒计时锁存器允许您等待锁存器,直到其当前计数减少到零。这意味着您可以让一个线程等待,直到其他线程完成一定量的工作,每个线程在完成任何操作后进行倒计时。
信号量允许您为任务分配许可。您可能只需要 10 个可用许可,因此请求许可的第 11 个任务必须等到另一个任务返回许可为止。
例如,您可以拥有一个只有 1 个可用许可证的信号量,并锁定它。这将导致与同步方法/ block 相同的行为。一旦返回许可,另一个线程就可以获得它以进入锁定的 block 。
sem.acquire();
doSomeStuff();
sem.release();
如果信号量仅使用 1 个许可进行初始化,则与以下内容相同:
synchronized(someLock) {
doSomeStuff();
}
关于java - 使用信号量作为唯一同步原语的倒计时锁存器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18947180/