[发明专利]一种数据库中自旋锁的实现方法无效
申请号: | 201110060572.5 | 申请日: | 2011-03-14 |
公开(公告)号: | CN102129391A | 公开(公告)日: | 2011-07-20 |
发明(设计)人: | 王非;黄本雄;刘维;邓磊 | 申请(专利权)人: | 华中科技大学 |
主分类号: | G06F9/46 | 分类号: | G06F9/46 |
代理公司: | 北京市德权律师事务所 11302 | 代理人: | 周发军 |
地址: | 430074 湖北*** | 国省代码: | 湖北;42 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 本发明公开了一种数据库中自旋锁的实现方法,其特征在于,一种数据库中自旋锁的实现方法,其特征在于,在共享内存中存储两个全局变量,一个是自旋锁变量,另一个是ID变量,系统初始化时两个变量被初始化为0;采用自旋锁变量高位存储值来记忆当前已持自旋锁线程,并根据该存储值在持锁线程异常退出导致死锁时,实现自旋锁自动解锁。本发明避免出现上述多个任务竞争同一个自旋锁时可能出现的死锁情况,并通过改进加锁流程及死锁判决流程,使自旋锁能够保护在数据结构上一段较长时间的操作,并能处理期间加锁线程的异常结束导致的死锁问题。 | ||
搜索关键词: | 一种 数据库 自旋 实现 方法 | ||
【主权项】:
一种数据库中自旋锁的实现方法,其特征在于,在共享内存中存储两个全局变量,一个是自旋锁变量,另一个是ID变量,系统初始化时两个变量被初始化为0;在加锁操作时,按如下步骤:步骤101,用原子操作读取ID变量中的值并将其值加1;步骤102,将第101步中获取的ID值与加锁后的状态值合成一个自旋锁变量值N,合成方法是:低位存储锁变量状态,高位存储ID值;步骤103,以原子操作访问自旋锁变量,尝试加锁操作;步骤104,若自旋锁状态为未占用,则加锁成功,将步骤102合成的锁变量值以原子操作存入自旋锁变量,对自旋锁变量的访问和将值存于自旋锁变量是原子的;步骤105,若自旋锁状态为已占用,加锁不成功则进入死锁判决流程,如果未出现死锁,则处理器自旋等待,转入步骤103进行加锁尝试;如果判断出现死锁;则转入步骤106解自旋锁,并重新转入步骤103。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于华中科技大学,未经华中科技大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201110060572.5/,转载请声明来源钻瓜专利网。