文章
7
粉丝
0
获赞
0
访问
262
semaphore vat_full = 0, vat_empty = 10, mutex_w = 1, mutex_v = 1, bucket_empty = 3, bucket_full = 0; // w表示水井,v表示水缸(代码区如果能用tab分隔符就好多了)
child:
while (1) {
P(bucket_empty); // 先取空桶
P(mutex_w); // 来到井边,看看有没有其他人在取水
开始盛水;
V(bucket_full); // 空桶盛满水,得到一个水桶
V(mutex_w); // 离开井边,别占位置
P(vat_empty); // 看看水缸是不是满的
P(mutex_v); // 不是满的,可以往里面倒水了
P(bucket_full); // 倒水,消耗一个水桶
开始倒水;
V(bucket_empty); // 得到了一个空桶
V(vat_full); // 水缸里的水变多了
V(mutex_v); // 倒完了,赶紧走
}
laodeng:
while (1) {
P(bucket_empty); // 渴了,找空桶
P(vat_full); // 有水吗?
P(mutex_v); // 水缸边没人
开始盛水;
V(bucket_full); // 得到一水桶
V(vat_empty); // 缸里的水少了
V(mutex_v); // 离开水缸边
P(bucket_full); // 喝水前的神秘仪式
好水喝够,饮饮饮饮;
V(bucket_empty); // 喝完了,得到一个空桶
}
评分及理由
(1)信号量定义(满分1分)
得分:1分
理由:信号量定义正确,包括互斥信号量和同步信号量,与标准答案一致。
(2)小和尚进程(满分3.5分)
...
登录后发布评论
暂无评论,来抢沙发