文章
14
粉丝
0
获赞
0
访问
1.2k
Semophore mutex = 1; // 互斥锁
Semophore empty = N; // 空位置
Semophore odd = 0; // 记录奇数个数
Semophore even = 0; // 记录偶数个数
P1{
while(1){
int num = pruduce(); // 生成数据
p(empty); // 检测缓冲区是否有空位置
p(mutex); // 互斥访问
put(num);
v(mutex); // 退出临界区
if(num&1==0) v(even); // 放一个偶数
else v(odd); // 放一个奇数
}
}
P2 {
while(1){
p(odd);// 看是否有奇数
p(mutex); //进入临界区
getodd();
counterodd();
v(mutex); // 推出临界区
v(empty); // 释放一个空间
}
}
P3 {
while(1){
p(even); // 看是否有偶数
p(mutex); // 进入临界区
geteven();
countereven();
v(mutex); // 退出临界区
v(empty); // 释放一个空间
}
}
评分及理由
(1)得分及理由(满分7分)
得分:5分
理由:
登录后发布评论
暂无评论,来抢沙发