| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 6547 人关注过本帖
标题:求助:无死锁的两段锁协议(2PL)如何用C实现呢?
只看楼主 加入收藏
superzn
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2006-5-5
收藏
 问题点数:0 回复次数:0 
求助:无死锁的两段锁协议(2PL)如何用C实现呢?

看了很多资料还是不太明白,可能是我愚钝吧,希望大侠指点一二,谢谢!~~
具体算法是这样的:
1.结点加锁管理器的数据结构:

1)描述该结点锁序的双向队列PQF 队列的每个结点为一结构类型,成员有文件名、写(Lw)或读锁 (Lr) 标记以及前向和后向指针,其头结点的两个指针分别指向队列的第一个元素和最后一个元素;

2)描述每个事务锁序的队列TiQF:结点描述同上。

2.算法描述:当事务Ti要求对该结点的某个文件F加锁时

1)取出TiQF的最后一个元素的文件名Ft、以及锁类型描述(LwLr)

2)以FtF分别扫描队列PQF,F位于Ft之前,则转(5)否则转(3);

3)若PQF队列中没有F,则将对F的加锁插入到PQFTiQF的队尾;

4)若本次对F的加锁是共享锁(本次申请读而PQF中的锁亦为读锁),则将本次加锁插入到TiQF的队尾;否则Ti等待;(5)事务Ti回滚,即取消事务的所有请求,恢复事务的原始状态,并从PQF队列中删除该事务的所有加锁(原有的其它锁序不变)。

希望大侠赐教~~~小弟C语言不是很懂

搜索更多相关主题的帖子: 协议 死锁 
2006-05-05 21:26
快速回复:求助:无死锁的两段锁协议(2PL)如何用C实现呢?
数据加载中...
 
   



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

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