[发明专利]一种并发访问控制方法和系统在审
申请号: | 201510424714.X | 申请日: | 2015-07-17 |
公开(公告)号: | CN105138310A | 公开(公告)日: | 2015-12-09 |
发明(设计)人: | 樊宇 | 申请(专利权)人: | 北京京东尚科信息技术有限公司;北京京东世纪贸易有限公司 |
主分类号: | G06F9/38 | 分类号: | G06F9/38 |
代理公司: | 北京德琦知识产权代理有限公司 11018 | 代理人: | 王一斌;王琦 |
地址: | 100080 北京市海淀区杏石口路6*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 并发 访问 控制 方法 系统 | ||
技术领域
本发明涉及计算机技术,特别是涉及一种并发访问控制方法和系统。
背景技术
目前,在计算机应用领域,常常需要多个程序并行执行,而多个并行程序执行时,通常会存在同时使用同一个调用接口的情况,调用接口一般都会对后台数据库等存储系统进行读写操作。这样,就会产生多个并行程序并发访问同一数据资源的情况。例如,在软件测试过程中,往往会有多个测试用例同时使用相同调用接口访问同一数据的情况。此时,为了确保系统数据的安全性,需要对这种并发访问进行控制,以避免多个并发程序同时访问相同数据造成对系统数据的破坏。
目前,针对同一执行机上同一进程的多个测试用例线程产生的上述并发访问问题,通常采用多线程加锁的方式来解决,即为冲突代码设置相应的锁参数或线程同步代码,不同线程在调用该冲突代码时需要根据该锁参数状态或线程状态判断是否可以调用,否则需要待该冲突代码被解锁后方可调用。
上述多线程加锁方法仅适用于解决同一进程的多个线程的并发访问冲突。而在实际应用中,同一调用接口的并发访问冲突不限于该多线程情景,两个测试用例可能分别属于不同的进程,甚至存在于不同的执行机上,这些情况下发生冲突的用例是无法访问同一资源下的待更改数据的,因此,无法采用多线程加锁方法解决上述并发访问冲突问题。针对上述情况,通常采用在设计测试用例时确保访问冲突资源时不同测试用例使用不同输入参数的方法,来解决并发访问冲突问题。该方法可以解决上述并发访问冲突的问题。但是,需要在设计时理清测试场景中的共用接口的调用环境,以定位用例中会发生并行访问冲突的准确位置,并且需要对共用接口所访问数据的维护程序进行修改,这些将不可避免的增加程序设计、调度的复杂性、降低调试效率并且需要对已有的数据资源和程序进行必要的改动。
发明内容
有鉴于此,本发明的主要目的在于提供一种并发访问控制方法和系统,可以有效解决不同并行程序的并发访问冲突问题,且易于实现。
为了达到上述目的,本发明提出的技术方案为:
一种并发访问控制方法,包括:
a、预先确定并行程序中需要并行调用的公共资源,并为所述公共资源配置相应的标识信息;
b、每个所述并行程序在需要调用所述公共资源时,生成本程序当前的运行时刻信息,触发锁信息服务器根据所述运行时刻信息和该服务器当前保存的锁信息,判断所述公共资源是否被加锁;如果是,则所述并行程序按照预设的间隔时间t重复所述触发;否则,所述并行程序触发所述锁信息服务器利用所述运行时刻信息对所述公共资源进行加锁,所述运行时刻信息包括所述并行程序的标识信息和所述公共资源的标识信息,所述加锁后得到所述公共资源的锁信息包括所述运行时刻信息和当前的时间戳;
c、所述锁信息服务器从当前保存的所述公共资源的所有锁信息中,选择出所述时间戳最早的锁信息,并触发所选择的锁信息对应的并行程序调用所述公共资源;
d、所述并行程序在所述调用结束后,触发所述锁信息服务器对所述公共资源解锁;所述锁信息服务器判断当前是否保存有所述公共资源的锁信息;如果是,则执行步骤c。
一种并发访问控制系统,包括:
公共资源配置模块,用于预先确定并行程序中需要并行调用的公共资源,并为所述公共资源配置相应的标识信息;
加锁模块,用于所述并行程序在需要调用所述公共资源时,生成本程序当前的运行时刻信息,触发锁信息服务器根据所述运行时刻信息和该服务器当前保存的锁信息,判断所述公共资源是否被加锁;如果是,则所述并行程序按照预设的间隔时间t重复所述触发;否则,所述并行程序触发所述锁信息服务器利用所述运行时刻信息对所述公共资源进行加锁,所述运行时刻信息包括所述并行程序的标识信息和所述公共资源的标识信息,所述加锁后得到所述公共资源的锁信息包括所述运行时刻信息和当前的时间戳;
锁信息服务器,用于根据所述运行时刻信息和本服务器当前保存的锁信息,判断所述公共资源是否被加锁,并在未加锁时利用所述运行时刻信息对所述公共资源进行加锁;在解锁模块的触发下,对所述公共资源进行解锁;在所述加锁完成后或所述解锁结束后,从当前保存的所述公共资源的所有锁信息中,选择出所述时间戳最早的锁信息,并触发所选择的锁信息对应的并行程序调用所述公共资源;
解锁模块,用于在所述并行程序执行所述调用结束后,触发所述锁信息服务器对所述公共资源解锁。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京京东尚科信息技术有限公司;北京京东世纪贸易有限公司,未经北京京东尚科信息技术有限公司;北京京东世纪贸易有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201510424714.X/2.html,转载请声明来源钻瓜专利网。