当前位置: 代码迷 >> C语言 >> 求助:无死锁的两段锁协议(2PL)如何用C实现呢?
  详细解决方案

求助:无死锁的两段锁协议(2PL)如何用C实现呢?

热度:342   发布时间:2006-05-05 21:26:00.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语言不是很懂

搜索更多相关的解决方案: 协议  死锁  

----------------解决方案--------------------------------------------------------
  相关解决方案