| 编程中国 | 业界新闻 | 技术文章 | 视频教程 | 下载频道 | 程序源码 | 个人空间 | 编程论坛
全能ASP/PHP/ASP.NET主机,支持月付专业 MSSQL 数据库空间,支持月付专业 MySQL 数据库空间,支持月付学习型 ASP/PHP/ASP.NET 主机 30元/年
高端软件开发 = 年薪十万不是梦赛孚耐:软件保护加密专家身份认证令牌USB KEY 
共有 372 人关注过本帖
标题:一个关于死锁的问题
收藏  订阅  推荐  打印 
Bilicon
Rank: 1
等级:新手上路
帖子:34
积分:440
注册:2005-11-1
一个关于死锁的问题

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


程序代码:

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

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


请大家帮帮我。

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

看不懂


http://www.deerz.cn 第二站>>>提供源码下载
2006-3-23 20:47
kai608
Rank: 2
等级:注册会员
帖子:41
积分:510
注册:2006-5-7

a

http://gjb99.2000y.net/我的主页
2006-5-7 13:50
Olivia
Rank: 1
等级:新手上路
帖子:1
积分:110
注册:2006-5-9

我是初学者,我想是不是因为应该先考虑空间多少再发信号量,不然空间不减一,信号量就不 能正确反映空间是否已满!
2006-5-9 22:47
关于我们 | 广告合作 | 编程中国 | 清除Cookies | Archiver | WAP | TOP

编程中国 版权所有,并保留所有权利。鲁ICP备08000592号
Powered by Discuz, Processed in 0.068032 second(s), 9 queries.
Copyright©2004-2008, BCCN.NET, All Rights Reserved