java - 使用信号量作为唯一同步原语的倒计时锁存器

标签 java eclipse nachos

任何人都可以解释如何使用信号量作为唯一允许使用的同步原语来编程倒计时锁存器吗?谢谢。

最佳答案

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

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

例如,您可以拥有一个只有 1 个可用许可证的信号量,并锁定它。这将导致与同步方法/ block 相同的行为。一旦返回许可,另一个线程就可以获得它以进入锁定的 block 。

 sem.acquire();

 doSomeStuff();

 sem.release();

如果信号量仅使用 1 个许可进行初始化,则与以下内容相同:

synchronized(someLock) {

  doSomeStuff();

}

关于java - 使用信号量作为唯一同步原语的倒计时锁存器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18947180/

相关文章:

ubuntu - 编译Nachos源码报错 "gnu/stubs-32.h: No such file or directory"

c++ - C++ 中指针的段错误

java - Struts2 注释的还是基于 XML 的?哪个更容易管理和简单?

java - 如何在 XPages 中控制绑定(bind)到作用域变量的数值类型

java - 如何通过对Hive进行编码来模拟用户

java - 如何在 Eclipse Helios 中引用另一个项目中的库?

java - Eclipse 无法识别我的源代码中的循环

java - 阻塞队列替代synchronized

java - tomcat项目的URL设置

c++ - DEBUG 语句的作用是什么?