| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1149 人关注过本帖
标题:加锁管理程序
取消只看楼主 加入收藏
roman
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2006-5-17
收藏
 问题点数:0 回复次数:1 
加锁管理程序

加锁管理程序
任务:

你在一个 DBMS(Data Base Management System) 开发小组中工作,今天你的任务是编写一个管理加锁事宜的程序。

在 DBMS 中,可以使用锁来控制多个程序对数据项的访问:当程序要访问数据项时,要给数据项上锁。如果它仅仅是读取数据项,则通常上共享锁,这样其它的事务也可以同时读取该数据项。而若此程序是要修改数据项,则会给它数据项上独占锁,此时其它程序也就不能再访问这个数据项了。

对于同一个数据项,若有不同的程序同时给一个数据项上锁,且其中至少有一个是独占锁时,就表示它们发生了冲突。当发生冲突时,加锁的请求就会被拒绝。

每个加锁请求包含三个元素:锁模式、事务标识符和数据项标识符。两个程序可以同时给数据项上锁,前提是它们没有冲突。

在早期开发阶段,你需要编写一个简单的锁管理程序来处理加锁请求。它使用以下的规则来处理各种请求:

  1. 若一个加锁请求与先前的加锁请求没有发生冲突,则 DBMS 许可这个加锁请求;

  2. 一旦允许了一个加锁请求,则它将永远锁定数据项,不会改变,也不会释放;

  3. 如果一个程序的加锁请求与已有的锁发生了冲突,则 DBMS 拒绝这个加锁请求;

  4. 如果一个程序的加锁请求被拒绝,则 DBMS 忽略由这个程序发出的后续所有加锁请求。

输入:

输入由一系列的加锁请求组成,每一个请求占一行。请求的格式如下:

MODE TRID ITEM

其中 MODE 是代表被请求的所模式的一个小写字母 s 或者 x。TRID 和 ITEM 分别是程序标识符和数据项标识符。TRID 和 ITEM 都是整数,大于 0,并且最多包含有 9 个十进制数字。

在输入中包含有至少一个,不超过一万条加锁请求。

输入的结束标志是单独一行的字符“#”。

输出:

你的程序应该能够连续地处理输入的请求,对于每一个请求,做出相应的相应,并将相应输出。响应可以有以下集几种:

  • GRANTED:该加锁请求没有同先前的任何加锁请求发生冲突,DBMS 会许可这个请求,对相应数据项上锁;

  • DENIED:该加锁请求同先前的某个锁发生冲突,DBMS 拒绝这个加锁请求;

  • IGNORED:发出加锁请求的程序之前已经被拒绝过。

响应必须完全以如上所示的的大些字母来表示。

[此贴子已经被作者于2006-5-24 21:05:42编辑过]

搜索更多相关主题的帖子: 管理程序 数据 DBMS 任务 Base 
2006-05-24 21:04
roman
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2006-5-17
收藏
得分:0 

已经解决了.


智者乐观,仁者达观
2006-05-24 22:17
快速回复:加锁管理程序
数据加载中...
 
   



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

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