问题:
答案:
对于这个答案我不懂的地方在:
我知道p1进程的先p(s1)再v(s2)和p2进程的先p(s2)再v(s1)是为了实现两个手臂的互相同步,但是没有给初始值,我也不知道s1和s2该怎么设置初始值,所以我理解不了这样如何实现真正的相互同步。
我之后又想了一个答案,不知道对不对😭
思路:我设置了一个全局变量i,让i的初值为0,这样能否实现两个交替工作啊?我不知道对不对我感觉我做的是对的,如果有不对的地方希望帮我讲一下😢
(希望有人帮帮我🤧)
问题:
对于这个答案我不懂的地方在:
我知道p1进程的先p(s1)再v(s2)和p2进程的先p(s2)再v(s1)是为了实现两个手臂的互相同步,但是没有给初始值,我也不知道s1和s2该怎么设置初始值,所以我理解不了这样如何实现真正的相互同步。
我之后又想了一个答案,不知道对不对😭
思路:我设置了一个全局变量i,让i的初值为0,这样能否实现两个交替工作啊?我不知道对不对我感觉我做的是对的,如果有不对的地方希望帮我讲一下😢
(希望有人帮帮我🤧)
// 信号量定义
semaphore mutex = 1; // 互斥信号量,确保两个手臂不会同时工作
semaphore sync1 = 0; // 同步信号量,用于唤醒手臂1
semaphore sync2 = 0; // 同步信号量,用于唤醒手臂2
// P1进程:驱动左臂拣易拉罐
process P1 {
while (true) {
P(mutex); // 请求互斥访问
// 拣易拉罐操作
V(sync2); // 唤醒手臂2
V(mutex); // 释放互斥访问权限
P(sync1); // 等待手臂2完成工作,唤醒p1
}
}
// P2进程:驱动右臂拣塑料瓶
process P2 {
while (true) {
P(sync2); // 等待手臂1完成工作,唤醒p2
P(mutex); // 请求互斥访问
// 拣塑料瓶操作
V(sync1); // 唤醒手臂1
V(mutex); // 释放互斥访问权限
}
}