清除互斥锁的方法及系统技术方案

技术编号:8934436 阅读:185 留言:0更新日期:2013-07-18 03:00
一种清除互斥锁的方法,包括以下步骤:获取互斥锁,所述互斥锁与会话对象之间具有预设的对应关系;根据所述互斥锁、所述互斥锁与会话对象之间的对应关系获取会话对象;在所述会话对象注销时,清除所述互斥锁。此外,还提供了一种清除互斥锁的系统。上述清除互斥锁的方法和系统更加方便用户操作。

【技术实现步骤摘要】
清除互斥锁的方法及系统
本专利技术涉及软件
,特别涉及一种清除互斥锁的方法及系统。
技术介绍
传统技术中,用户在访问数据库或者其他数据资源时,为了防止多个用户对数据资源进行互斥操作,通常在用户开始对数据资源进行读或写操作时,根据用户的用户标识对数据资源添加互斥锁。互斥锁可以是内存中的对象,也可以是数据库中的表锁。当用户结束对数据资源的读或写操作时,则释放该互斥锁。在数据资源被添加了互斥锁后,其他用户(用户标识不同的用户)只能同步等待至互斥锁被释放,然后再开始对数据资源进行读或写操作。然而,当根据用户的用户标识对数据资源添加了互斥锁之后。若发生意外故障而导致系统突然宕机,此时用户对数据资源的读或写操作还未完成,因此互斥锁仍未释放。而由于系统重启之后,用户不可能继续完成对数据资源的读或写操作,因此互斥锁将永远不会被释放,从而成为垃圾锁,进而导致其他用户无法访问该互斥锁对应的数据资源。传统技术中在清理垃圾锁时,由管理员手动进行清除。若垃圾锁为数据库中的表锁,则管理员手动修改数据库中的数据项。若垃圾锁为内存对象,则管理员手动清除该内存对象。管理员在手动清除互斥锁时,需要先根据大量日志判断互斥锁是否为垃圾锁,操作十分不方便。
技术实现思路
基于此,有必要提供一种方便操作的清除互斥锁的方法。一种清除互斥锁的方法,包括以下步骤:获取互斥锁,所述互斥锁与会话对象之间具有预设的对应关系;根据所述互斥锁、所述互斥锁与会话对象之间的对应关系获取会话对象;在所述会话对象注销时,清除所述互斥锁。优选的,所述获取互斥锁的步骤之前还包括:创建互斥锁,并建立互斥锁与会话对象之间的对应关系。优选的,所述会话对象具有会话标识;所述建立互斥锁与会话对象之间的对应关系的步骤具体为:获取会话对象,根据所述会话对象获取会话标识,并建立会话标识与互斥锁的对应关系;所述根据互斥锁、所述互斥锁与会话对象之间的对应关系获取会话对象的步骤具体为:根据所述互斥锁、所述会话标识与互斥锁的对应关系获取会话标识,根据所述会话标识获取会话对象。优选的,所述互斥锁具有互斥锁标识;所述建立互斥锁与会话对象之间的对应关系的步骤还包括:通过在所述会话对象的属性中添加互斥锁标识建立所述互斥锁与会话对象的对应关系。优选的,所述方法还包括:在预设的会话监听对象中注册清除函数;所述在所述会话对象注销时,清除所述互斥锁的步骤还包括:在所述会话监听对象监听到会话对象注销时,根据所述会话对象、所述互斥锁与会话对象的对应关系获取互斥锁;调用所述清除函数清除所述互斥锁。此外,还有必要提供一种方便操作的清除互斥锁的系统。一种清除互斥锁的系统,包括以下模块:互斥锁获取模块,用于获取互斥锁,所述互斥锁与会话对象之间具有预设的对应关系;会话对象获取模块,用于根据所述互斥锁、所述互斥锁与会话对象之间的对应关系获取会话对象;互斥锁清除模块,用于在所述会话对象注销时,清除所述互斥锁。优选的,还包括互斥锁创建模块,用于创建互斥锁,并建立互斥锁与会话对象之间的对应关系。优选的,所述会话对象具有会话标识;所述互斥锁创建模块还用于获取会话对象,根据所述会话对象获取会话标识,并建立会话标识与互斥锁的对应关系;所述会话对象获取模块还用于根据所述互斥锁、所述会话标识与互斥锁的对应关系获取会话标识,根据所述会话标识获取会话对象。优选的,所述互斥锁具有互斥锁标识;所述互斥锁创建模块还用于通过在所述会话对象的属性中添加互斥锁标识建立所述互斥锁与会话对象的对应关系。优选的,还包括互斥锁监听模块用于在预设的会话监听对象中注册清除函数;所述互斥锁清除模块还用于在所述会话监听对象监听到会话对象注销时,根据所述会话对象、所述互斥锁与会话对象的对应关系获取互斥锁,调用所述清除函数清除所述互斥锁。上述清除互斥锁的方法和系统,在预先创建互斥锁时,建立了互斥锁和会话对象的对应关系。由于会话对象会根据访问请求创建和消亡,当会话对象被注销时,即表示用户已停止进行数据访问操作,此时清除互斥锁不会对该用户的访问产生影响,且合理地释放了数据资源,方便其他用户访问。因此,在清除互斥锁时,只需要判断会话对象是否已注销即可判断互斥锁是否为垃圾锁,且可由程序自动执行,从而方便了用户操作。【附图说明】图1为一个实施例中清除互斥锁的方法的流程图;图2为一个实施例中清除互斥锁的系统的结构示意图;图3为另一个实施例中清除互斥锁的系统的结构示意图。【具体实施方式】如图1所示,在一个实施例中,一种清除互斥锁的方法,包括以下步骤:步骤S102,获取互斥锁,互斥锁与会话对象之间具有预设的对应关系。互斥锁可以是数据库中的表锁,也可以是内存中的对象锁。会话对象(session对象)是一种表示用户连接会话的对象。会话对象内可以与用户标识对应且存储部分连接参数,当用户掉线重连时,在预设的时限内,可根据用户标识获取该会话对象,并根据会话对象中的连接参数恢复会话。一个实施例中,在获取互斥锁之前还可以预先创建互斥锁,并建立互斥锁和会话对象的对应关系。创建互斥锁可以是数据库级创建也可以是内存创建。当用户访问数据库中的数据记录时,可利用数据库的锁机制对数据记录添加互斥锁。也可以通过添加记录项对数据记录添加互斥锁。例如,可在数据库中新建数据列,然后在该数据列中添加标识符。当对数据记录进行读或写操作之时将标识符设为关闭,当对数据记录完成读或写操作之后将标识符设为开启。当用户访问内存中的数据资源时,可通过对访问线程添加对象锁来作为互斥锁,例如,在java和.net架构中,可利用wait和notify机制来对访问线程添加对象锁。进一步的,会话对象具有会话标识。可获取会话对象,根据会话对象获取会话标识,并建立会话标识和互斥锁的对应关系。会话标识和会话对象一一对应,可以是UUID(UniversallyUniqueIdentifier,通用唯一识别码),可通过建立会话标识与互斥锁的映射表来建立会话标识和互斥锁的对应关系,也可以通过在互斥锁的属性中添加会话标识来建立对应关系。如前例中,可以在数据表中使用会话标识作为标识符,当数据列中存在会话标识时,锁关闭,反之,锁开启。步骤S104,根据互斥锁、互斥锁与会话对象之间的对应关系获取会话对象。互斥锁与会话对象的关系中,互斥锁与会话对象可以是多对一的关系。会话对象可以对应多个互斥锁(一个会话中可以包括多个访问数据资源的线程,每个线程都可以产生互斥锁)。在一个实施例中,可根据互斥锁、会话标识与互斥锁的对应关系获取会话标识,根据会话标识获取会话对象。步骤S106,在会话对象注销时,清除互斥锁。可以为会话对象设置超时时间,当用户在超时时间内未进行任何访问操作,则会话对象将被注销。当用户在超时时间内进行访问操作时,则刷新超时时间。例如,可以设置会话对象的超时时间为30分钟,若30分钟内没有接收到任何访问请求,则注销该会话对象。若接收到,则刷新超时时间为30分钟。一个实施例中,可在会话对象的超时时间后,先判断会话对象是否已被注销,若已注销,则清除互斥锁,若未注销,则再等待预设时间再判断会话对象是否被注销,直到互斥锁被清除。可以通过调用预设的清除函数来清除互斥锁。例如,若互斥锁为数据库中的表锁,则可通过清除函数将数据库中用于表示互斥锁状态的数据项修改本文档来自技高网...
清除互斥锁的方法及系统

【技术保护点】
一种清除互斥锁的方法,包括以下步骤:获取互斥锁,所述互斥锁与会话对象之间具有预设的对应关系;根据所述互斥锁、所述互斥锁与会话对象之间的对应关系获取会话对象;在所述会话对象注销时,清除所述互斥锁。

【技术特征摘要】
1.一种清除互斥锁的方法,包括以下步骤:创建互斥锁,在互斥锁表中注册互斥锁,通过建立互斥锁与会话对象的会话标识的映射表来建立互斥锁与会话对象之间的对应关系;定期发起清除线程遍历所述互斥锁表中的互斥锁,所述互斥锁与会话对象之间具有预设的对应关系;根据所述互斥锁、所述互斥锁与会话对象之间的对应关系获取会话对象;所述会话对象设置有超时时间,在所述超时时间内所述会话对象未被访问操作时,则所述会话对象被注销;若获取到的与所述互斥锁对应的会话对象已注销,则所述清除线程调用预设的清除函数清除所述互斥锁。2.根据权利要求1所述的清除互斥锁的方法,其特征在于,所述会话对象具有会话标识;所述建立互斥锁与会话对象之间的对应关系的步骤具体为:获取会话对象,根据所述会话对象获取会话标识,并建立会话标识与互斥锁的对应关系;所述根据所述互斥锁、所述互斥锁与会话对象之间的对应关系获取会话对象的步骤具体为:根据所述互斥锁、所述会话标识与互斥锁的对应关系获取会话标识,根据所述会话标识获取会话对象。3.根据权利要求2所述的清除互斥锁的方法,其特征在于,所述互斥锁具有互斥锁标识;所述建立互斥锁与会话对象之间的对应关系的步骤还包括:通过在所述会话对象的属性中添加互斥锁标识建立所述互斥锁与会话对象的对应关系。4.根据权利要求3所述的清除互斥锁的方法,其特征在于,所述方法还包括:在预设的会话监听对象中注册清除函数;在所述会话监听对象监听到会话对象注销时,根据所述会话对象、所述互斥锁与会话对象的对应关系获取互斥锁;调用所述清除函数清除所述互斥锁。5.一种清...

【专利技术属性】
技术研发人员:陈瑞金
申请(专利权)人:金蝶软件中国有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1