operating-system - 使用 Semaphore 确定三个进程的执行顺序并打印“AABC”
问题描述
P1、P2 和 P3 是执行各自任务的三个进程。它们应该使用信号量相互同步,以便无限次打印字符串“AABC”。确定所需的最小信号量及其初始值。还要确定应该在 P1、P2 和 P3 的代码中插入对该信号量的操作的位置。描述你的解决方案是如何工作的。
P1 P2 P3
while(true){ while(true){ while (true){
print(“A”); print(“B”); print("C");
} } }
我试图用三个信号量来回答这个问题。但不确定它是否正确。初始值 P=1,Q=-1,R=0
P1 P2 P3
while(true){ while(true){ while(true){
wait(P) wait(Q) wait(R)
print("A") print("B") print("C")
signal(P) signal(R) signal(P)
signal(Q) } }
}
解决方案
根据您的代码,也可以生成“AAABC”。这是不被接受的。
初始值 P=2,Q=-1,R=0。
P1:
while(true){
wait(P)
print("A")
signal(Q)
}
P2:
while(true){
wait(Q)
print("B")
signal(R)
}
P3:
while(true){
wait(R)
print("C")
signal(P)
}
推荐阅读
- scala - scala spark获取每个时间间隔的平均值
- postman - Newman - 在每个测试脚本/测试用例之前运行特定操作
- corda - 在运行时修改 Corda 服务对象的行为
- sharepoint - SSRS - 动态数据条
- python - 线性回归是否适用于分类自变量和连续因变量?
- php - 如何重写我的正则表达式以匹配正确的用户昵称?
- spring - Spring Integration Mail Google IMAP 如何设置收件箱的检查频率
- java - java求矩形和正方形的面积
- c# - WPF - 对象的列表到 DataGrid 中自己的组合框列
- android - 神秘错误:导航到另一个 React Native 视图并返回后,React Native 视图损坏(但没有崩溃)