标题:一个关于死锁的问题
只看楼主
Bilicon
Rank: 1
等 级:新手上路
帖 子:34
专家分:0
注 册:2005-11-1
 问题点数:0 回复次数:3 
一个关于死锁的问题

我上操作系统的课的时候,遇到了一个我不理解的地方。问题是这样的,利用记录型信号量解决生产者——消费者问题。


Var mutex,empty,full:semaphore :=1,n,0;
buffer : array[0,...,n -1] of item;
in, out : integer := 0, 0;
begin
parbegin
proceducer :begin
repeat
.
.
.
producer an item nextp;
.
.
.
wait(empty); //这句不能与下句调换
wait(mutex);
buffer(in) := nextp;
in := (in+1)mod n;
signal(mutex);
signal(full);
until false;
end
comsumer :begin
repeat
wait(full); //这句也不能与下句调换
wait(mutex);
nextc := buffer(out);
out :=(out+1) mod n;
singal(mutex);
signal(empty);
consumer the item in nextc;
until false;
end
parend
end

这个代码虽然好像长了些,但是还是比较容易理解的,我所不理解的是我不知道为什么如果先wait(mutex)就会引起死锁。


请大家帮帮我。

搜索更多相关主题的帖子: 死锁 消费者 操作系统 begin repeat 
2006-03-20 16:07
sunnvya
Rank: 5Rank: 5
等 级:贵宾
威 望:17
帖 子:1094
专家分:0
注 册:2005-11-23
得分:0 

看不懂


http://www. 第二站>>>提供源码下载
2006-03-23 20:47
kai608
Rank: 1
等 级:新手上路
帖 子:41
专家分:0
注 册:2006-5-7
得分:0 
a

http://gjb99./我的主页
2006-05-07 13:50
Olivia
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2006-5-9
得分:0 
我是初学者,我想是不是因为应该先考虑空间多少再发信号量,不然空间不减一,信号量就不 能正确反映空间是否已满!
2006-05-09 22:47



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-51614-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.552472 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved