文章
78
粉丝
0
获赞
0
访问
3.5k
semaphore empty_a = M-x; //A信箱剩余空位
semaphore empty_b = N-y; //B信箱剩余空位
semaphore full_a = x; //A信箱内邮件数
semaphore full_b = y;//B信箱内邮件书
semaphore mutex_a = 1; //互斥访问A信箱
semaphore mutex_b=1;//互斥访问B信箱
CoBegin
A{
while(true){
p(full_a);
p(mutex_a);
从A的信箱中取出一个邮件;
v(mutex_a);
v(empty_a);
回答问题并提出一个新问题;
p(empty_b);
p(mutex_b);
将新邮件放入B的信箱;
v(mutex_b);
v(full_b);
}
B{
p(full_b);
p(mutex_b);
从B的信箱中取出一个邮件;
v(mutex_b);
v(empty_b);
回答问题并提出一个新问题;
p(full_a);
p(mutex_a);
将新邮件放入A的信箱;
v(mutex_a);
v(full_a);
}
}
CoEnd
评分及理由
(1)得分及理由(满分3分)
信号量定义及初值正确,得3分。
(2)得分及理由(满分3分)
互斥信号量的P、V操作使用正确,得3分。
(3)得分及理由(满分3分)
同步信号量的P、V操作使用正确,但在B线程中,将邮件放入A信箱时使用了错误的同步信号量(应为p(empty_a)而非p(full_a)),扣1分,得2分。
题目总分:3+3+2=8分
登录后发布评论
暂无评论,来抢沙发