java - Java/操作系统中的信号量
问题描述
我是论坛和一般编程的新手。目前我学习“操作系统”和 Java。本周我们开始讨论“信号量”这个话题,在我看来这有点令人困惑。我有这个练习:
共享变量 numberofworks = 0
员工A { 而(真){ A_works_outside(); A_works_inside(); 作品数 = 作品数 + 1; } } 员工B { 而(真){ B_works_outside(); B_works_inside(); 作品数 = 作品数 + 1; } }
好吧,练习想使用信号量(P 和 V)所以
- 在 EmployeeA 的 i 重复中,
A_works_inside()
仅在 B_works_outside() 完成时运行 在 EmployeeB 的 i 重复中,
Β_works_inside()
仅在 Α_works_outside() 完成时运行变量
numberofworks
必须是numberofworksA + numberofworksB
在帮助我完成这个练习之前,我必须用 Java 和“操作系统”编写代码(如果你当然可以的话) 信号量中的一般问题:互斥量和信号量之间的基本区别是什么?我应该如何理解何时使用互斥锁?
解决方案
尝试使用受 Mutex 保护的资源:
- Hi! Can I ?
*If free*
- Yup go on.
*Else*
- No, go away!
尝试使用受信号量保护的资源:
- Hi! Can I ?
*If free*
- Yup go on.
*Else*
- No, wait in the queue!
推荐阅读
- python-3.x - 在哪里使用 core-python 地图功能?
- react-native - 为什么我的 appbundle 有这个问题?
- python - 变量不会更改为“int” - 停留在“str”
- python - cx_Freeze : 导入模块失败
- php - PHP - 通过变量动态调用对象方法
- javascript - 为什么数组字面量和 BufferArray 之间的性能差距如此之大?
- haskell - 通过条件停止迭代循环并返回与条件匹配的值
- google-apps-script - 在对象 Gmail 线程中找不到函数 removeLabel
- r - 如何对LM摘要中的系数进行排序?
- python - 将现有的 NumPy 数组转换为 ctype 数组以在多处理之间共享