CN101650646B - 一种共享数据一致性的实现方法及装置 - Google Patents
一种共享数据一致性的实现方法及装置 Download PDFInfo
- Publication number
- CN101650646B CN101650646B CN2009101767908A CN200910176790A CN101650646B CN 101650646 B CN101650646 B CN 101650646B CN 2009101767908 A CN2009101767908 A CN 2009101767908A CN 200910176790 A CN200910176790 A CN 200910176790A CN 101650646 B CN101650646 B CN 101650646B
- Authority
- CN
- China
- Prior art keywords
- resource
- shared
- module
- locking
- occupied
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Landscapes
- Hardware Redundancy (AREA)
Abstract
本发明公开了一种共享数据一致性的实现方法,包括:锁模块预先建立占用资源表,占用资源表用于存储被占用的共享资源对应的资源ID;处理模块向锁模块发送访问请求,访问请求中携带要访问的共享资源对应的资源ID;锁模块根据要访问的共享资源对应的资源ID在所述占用资源表中进行匹配查找,如果占用资源表中没有所述资源ID,则资源ID对应的共享资源没有被其他处理模块使用,将资源ID添加到占用资源表中,并返回加锁成功,如果占用资源表中有资源ID,则资源ID对应的共享资源正被其他处理模块使用,返回加锁失败。本发明中,避免了多个功能模块同时对一个共享数据操作,造成的共享数据不一致。
Description
技术领域
本发明涉及通信技术领域,尤其涉及一种共享数据一致性的实现方法及装置。
背景技术
逻辑系统通常使用多个并行模块来提升系统性能,并行方案包括pipeline(流水线)和模块乒乓。Pipeline过程如图1所示,将一个功能模块拆分为多个步骤,每个步骤执行外部RAM(Random Access Memory,随机存取存储器)中不同的共享数据,多个步骤之间按顺序执行,执行的效果为同时对不同共享数据进行操作。模块乒乓过程如图2所示,构造多个具有相同功能的模块,多个模块并行处理外部RAM中不同的共享数据。上述两种并行方法都涉及到同时访问多个共享数据的问题,由于功能模块访问外部RAM有很大的延迟,当共享数据存放在外部RAM时保持共享数据一致性变得很困难,即如果多个进程同时对同一个共享数据操作,会造成操作结果的不可确定性。
为了克服现有技术中缺点,对于Pipeline过程可以在功能模块中增加共享数据cache(高速缓冲存储器),如图3所示;对于模块乒乓过程,可以在任一功能模块中增加共享数据cache,如图4所示。功能模块将需要使用的共享数据从外部RAM读到内部cache,由于内部cache读写延迟很小,功能模块以原子方式(读-修改-写作为一个不可打断的连续动作)操作cache。当某个逻辑模块修改共享数据,其结果立即反映到cache,其他使用该共享数据的功能模块能够立即得到新数据,从而保证数据一致。
然而,增加共享数据cache的方案实现复杂,尤其是功能模块很多时做到数据同步的复杂性会增大很多;另外,因为要将整个共享数据移到内部cache,内部RAM的大小必须与外部数据相同,占用逻辑资源很多。
发明内容
本发明提供了一种共享数据一致性的实现方法及装置,使一个共享数据在同一时刻只能被一个功能模块调用。
本发明提供了一种共享数据一致性的实现方法,应用于包括至少两个处理模块,和锁模块的装置中,所述方法包括以下步骤:
所述锁模块预先建立占用资源表,所述占用资源表用于存储被占用的共享资源对应的资源ID;
所述处理模块向所述锁模块发送访问请求,所述访问请求中携带要访问的共享资源对应的资源ID;
所述锁模块根据要访问的共享资源对应的资源ID在所述占用资源表中进行匹配查找,如果所述占用资源表中没有所述资源ID,则所述资源ID对应的共享资源没有被其他处理模块使用,将所述资源ID添加到所述占用资源表中,并返回加锁成功,如果所述占用资源表中有所述资源ID,则所述资源ID对应的共享资源正被其他处理模块使用,返回加锁失败;
所述处理模块接收所述锁模块返回的结果,当返回结果为加锁成功,则对所述共享资源进行调用,如果返回结果为加锁失败,则不对所述共享资源进行调用。
其中,还包括:
所述锁模块接收处理模块发送的解锁请求,所述解锁请求中携带需解锁的共享数据对应的资源ID;在所述占用资源表中查找到所述资源ID,将所述资源ID删除。
其中,所述锁模块根据要访问的共享资源对应的资源ID在所述占用资源表中进行匹配查找,具体包括:
将所述访问请求中的共享资源对应的资源ID与存放在所述占用资源表中的已存在共享资源对应的资源ID比较,如果有相同,则加锁失败;如果不相同,再判断所述占用资源表中是否还有空间,如果有空间则分配一个空闲空间存放新的共享资源对应的资源ID,返回加锁成功和分配的锁ID,如果没有空间则返回加锁失败。
其中,还包括:
所述锁模块接收处理模块发送的解锁请求,所述解锁请求中携带需解锁的共享数据对应的锁ID,将所述锁ID对应的资源ID删除。
其中,还包括:
当多个处理模块同时申请对同一个共享资源时,根据处理模块的优先级选择其中一个,对于未被选中的处理模块直接返回加锁失败,对于被选中的处理模块的访问请求根据要访问的共享资源对应的资源ID进行匹配查找。
本发明提供了一种共享数据一致性的实现装置,包括至少两个处理模块,和锁模块,
所述处理模块,与所述外部存储模块连接,用于向所述锁模块发送访问请求,所述访问请求中携带要访问的共享资源对应的资源ID,并接收所述锁模块返回的结果,当返回结果为加锁成功,则对所述共享资源进行调用,如果返回结果为加锁失败,则不对所述共享资源进行调用;
所述锁模块,与所述处理模块连接,用于预先建立占用资源表,所述占用资源表用于存储被占用的共享资源对应的资源ID;在接收到处理模块发送的访问请求后,根据要访问的共享资源对应的资源ID在所述占用资源表中进行匹配查找,如果占用资源表中没有所述资源ID,则将所述资源ID添加到所述占用资源表中,返回加锁成功;如果所述占用资源表中有所述资源ID,则返回加锁失败。
其中,当共享资源为共享数据时,所述装置还包括:所述外部存储模块,与所述处理模块连接,用于存储共享数据。
其中,所述锁模块,还用于接收所述处理模块完成对数据的修改后发送的解锁请求,所述解锁请求中携带需解锁的共享数据对应的资源ID,在所述占用资源表中查找到所述资源ID,将所述资源ID删除。
其中,所述锁模块具体包括:
资源标识存储模块,用于预先建立占用资源表,所述占用资源表用于存储被占用的共享资源对应的资源ID;
加锁模块,用于调度多个处理模块的访问请求,所述访问请求中携带要访问的共享资源对应的资源ID;
锁管理模块,分别与所述资源标识存储模块和所述加锁模块连接,用于处理所述加锁模块给出的访问请求,将所述访问请求中的共享资源对应的资源ID与存放在所述占用资源表中的已存在的共享资源对应的资源ID比较,如果有相同,则加锁失败;如果不相同,再判断所述占用资源表是否还有空间,如果有空间则分配一个空闲空间存放新的共享资源对应的资源ID,返回加锁成功和分配的锁ID,如果没有空间则返回加锁失败。
其中,所述锁模块还包括:
解锁模块,与所述锁管理模块连接,用于接收处理模块发送的解锁请求,所述解锁请求中携带需解锁的共享数据对应的锁ID;将所述解锁请求发送到所述锁管理模块,使所述锁管理模块将所述锁ID对应的资源ID从占用资源表中删除;或
接收处理模块发送的解锁请求,所述解锁请求中携带需解锁的共享数据对应的资源ID;在所述占用资源表中查找到所述资源ID,将所述资源ID删除。
其中,
所述加锁模块,还用于多个处理模块同时申请对同一个共享资源时,根据处理模块的优先级选择其中一个,对于未被选中的处理模块直接返回加锁失败,对于被选中的处理模块的访问请求传递到所述锁管理模块,根据要访问的共享资源对应的资源ID进行匹配查找。
与现有技术相比,本发明具有以下优点:
本发明中,通过对某个功能模块正在使用的共享数据加锁,使得该共享数据在锁定时间内只能被该功能模块使用,不能被其他功能模块调用,避免了多个功能模块同时对一个共享数据操作,造成的共享数据不一致。
附图说明
图1是现有技术中Pipeline过程示意图;
图2是现有技术中模块乒乓过程示意图;
图3是现有技术中通过cache解决Pipeline过程中共享数据一致性示意图;
图4是现有技术中通过cache解决模块乒乓过程中共享数据一致性示意图;
图5是本发明中一种共享数据一致性的实现装置结构图;
图6是本发明图5中锁模块结构图;
图7是本发明中一种共享数据一致性的实现方法流程图。
具体实施方式
本发明中的核心思想是:通过在锁模块中增加占用资源表,根据处理模块要访问的共享资源对应的资源ID在所述占用资源表中进行匹配查找,如果所述占用资源表中没有所述资源ID,则说明该资源ID对应的共享资源没有被其他处理模块使用,需要将该资源ID锁住,即将所述资源ID添加到所述占用资源表中,使其他处理模块不能调用所述共享资源;如果所述占用资源表中有所述资源ID,则说明该资源ID对应的共享资源正被其他处理模块使用,已被锁住。因此,本发明使得该共享资源在锁定时间内只能被一个功能模块使用,不能被其他功能模块调用,避免了多个功能模块同时对一个共享数据操作。
本发明提供了一种共享数据一致性的实现装置,如图5所示,包括至少两个处理模块510,和锁模块530。
处理模块510,用于向锁模块530发送访问请求,所述访问请求中携带要访问的共享资源对应的资源ID,并接收锁模块530返回的结果,当返回结果为加锁成功,则对所述共享资源进行调用,如果返回结果为加锁失败,则不对所述共享资源进行调用;
锁模块530,与处理模块510连接,用于预先建立占用资源表,所述占用资源表用于存储被占用的共享资源对应的资源ID;在接收到处理模块510发送的访问请求后,根据要访问的共享资源对应的资源ID在所述占用资源表中 进行匹配查找,如果占用资源表中没有所述资源ID,则所述资源ID对应的共享资源没有被其他处理模块使用,将所述资源ID添加到所述占用资源表中,返回加锁成功;如果所述占用资源表中有所述资源ID,则所述资源ID对应的共享资源正被其他处理模块使用,则返回加锁失败。
其中,共享资源为共享系统(例如计数器或设备串口等)时,对应的资源ID为共享系统的计数器或串口,处理模块在访问该共享系统时,资源ID为计数器序号或串口序号,比如系统有4个串口,每一时刻一个串口只能从一个处理模块接收数据,那么每个串口就是一个独立的共享资源。
其中,当共享资源为共享数据时,所述装置还包括外部存储模块520,与处理模块510连接,用于存储共享数据;当共享数据对应的资源ID为共享资源的存储地址时,处理模块510在访问该共享数据时,其目的地址即为该存储地址;共享数据对应的资源ID为共享数据的序号时,处理模块中存储有共享数据的基地址及每个共享数据的长度,在访问该共享数据时,可以根据目的地址及基地址推算出对应的序号。
当锁模块530接收到处理模块510完成对共享资源的修改后发送的解锁请求,所述解锁请求中携带该共享资源对应的资源ID,释放所述被加锁的共享资源,即将该共享资源对应的资源ID从所述占用资源表中删除,以便其他处理模块使用所述共享资源。
其中,锁模块如图6所示,包括:资源标识存储模块610,加锁模块620、锁管理模块630、和解锁模块640。
资源标识存储模块610,用于预先建立占用资源表,所述占用资源表用于存储被占用的共享资源对应的资源ID。由于同一个共享资源同一时刻只能被一个处理模块使用,一个共享资源被一个处理模块使用时,需要将该共享资源的资源ID存储到占用资源表中,表示该资源ID对应的共享资源已被使用,其他处理模块不能进行调用。
另外,不同的共享资源可以被处理模块同时使用,且占用资源表中可以记录多个资源ID,因此通过一个占用资源表可以同时对多个共享资源加锁, 逻辑内部存放资源ID的载体可以是寄存器也可以是内部RAM等。占用资源表能存放多少个共享资源对应的资源ID,就能同时对多少个共享资源加锁,每个存放共享资源对应的资源ID的寄存器(假定存放在寄存器中)对应一个锁ID,如果有16个寄存器那么就有16个锁。
加锁模块620,用于调度多个处理模块的访问请求,所述访问请求中携带要访问的共享资源对应的资源ID;
加锁模块620,还用于多个处理模块同时申请对同一个共享资源时,根据处理模块的优先级选择其中一个,对于未被选中的处理模块直接返回加锁失败,对于被选中的处理模块的访问请求传递到所述锁管理模块,根据要访问的共享资源对应的资源ID进行匹配查找。
锁管理模块630,分别与资源标识存储模块610和加锁模块620连接,用于处理加锁模块620给出调度多个用户的访问请求,将所述访问请求中的共享资源对应的资源ID与存放在所述占用资源表中的已存在的共享资源对应的资源ID比较,如果有相同,则加锁失败;如果不相同,再判断所述占用资源表是否还有空间,如果有空间则分配一个空闲空间存放新的共享资源对应的资源ID,返回加锁成功和分配的锁ID,如果没有空间则返回加锁失败。
处理模块访问请求的输入是资源ID,锁管理模块首先拿请求资源ID与存放在资源标识存储模块610中的已存在的资源ID比较,如果有相同的资源ID,则说明该资源ID对应的共享资源已被使用,加锁失败;如果没有相同的资源ID,则说明该资源ID对应的共享资源没被使用,再判断资源标识存储模块610中占用资源表是否还有空间,如果有空间则分配一个空闲空间,存放新的共享资源对应的资源ID,并分配锁ID,向处理模块返回加锁成功和分配的锁ID,如果没有空间则返回加锁失败。
解锁模块640,与锁管理模块630连接,用于接收处理模块发送的解锁请求,所述解锁请求中携带需解锁的锁ID;将所述解锁请求发送到锁管理模块630,使锁管理模块630将所述锁ID对应的资源ID从占用资源表中删除。或
接收处理模块发送的解锁请求,所述解锁请求中携带需解锁的共享数据对应的资源ID;在所述占用资源表中查找到所述资源ID,将所述资源ID删 除。
分配和释放占用资源表(例如资源存储寄存器)的方法有很多,比如为每个寄存器做一个有效标志位,当寄存器被占用时有效标志置位,释放后有效标志清零。
下面结合具体实例说明技术方案,
一,当共享资源为共享数据时,对应的资源ID为共享资源的存储地址,锁模块预先设置占用资源表中,该占用资源表中记录被使用共享数据对应的存储地址;当接收到处理模块发送的访问请求时,该访问请求中携带该存储地址,锁模块根据访问请求中的存储地址在占用资源表中进行匹配查找,如果占用资源表中存在该存储地址,则说明该存储地址对应的共享数据已被使用,无法对其加锁,返回加锁失败;如果占用资源表中不存在该存储地址,则说明该存储地址对应的共享数据没被使用,在占用资源表还有空闲空间时,将该存储地址记录到占用资源表中,返回加锁成功(可以同时返回为该共享数据分配的锁ID,以便对该共享数据解锁时使用)。
二,共享资源为共享数据时,对应的资源ID为共享资源的序号,处理模块中存储有共享数据的基地址及每个共享数据的长度,在访问该共享数据时,可以根据目的地址及基地址推算出对应的序号。假定有10000个共享数据,编号从1开始到10000。锁模块预先设置占用资源表,该占用资源表中记录被使用共享数据对应的序号。处理模块在访问表项前,存储有共享数据的基地址及每个共享数据的长度。
处理模块首先向锁模块发送访问请求,所述访问请求中携带要访问的共享数据对应的序号,例如处理模块1需要访问第100个共享数据(目的地址为基地址+100*每个共享数据长度),则通过锁模块的加锁接口输入资源ID=100,如果占用资源表中第100个序号没被占用,则说明该序号对应的共享数据没有被其他处理模块使用,则返回加锁成功,并将该序号记录到占用资源表中,且为该共享资源分配锁ID;如果占用资源表中存在第100序号,表示该序号对应的共享数据正被其他处理模块使用,则返回加锁失败。当处理模块完成对共享数据的修改后通过锁模块的解锁接口释放,以便其他处理模 块使用这个序号。
三,外部存储模块中存储有共享资源及对应的编号,例如共享资源为计数器,设有100个计数器,编号分别为1到100,处理模块知道要访问的计数器对应的编号,该编号为资源ID。
共享资源为其他共享系统(例如计数器或设备串口等)时,对应的资源ID为共享系统的端口或串口,处理模块在访问该共享系统时,资源ID为端口序号或串口序号,比如系统有4个串口,每一时刻一个串口只能从一个处理模块接收数据,那么每个串口就是一个独立的共享资源。
锁模块预先设置占用资源表中,该占用资源表中记录被使用共享系统的计数器或设备串口对应的序号;当接收到处理模块发送的访问请求时,该访问请求中携带对应的序号,锁模块根据访问请求中的对应的序号在占用资源表中进行匹配查找,如果占用资源表中存在该序号,则说明该序号对应的计数器或串口已被使用,无法对其加锁,返回加锁失败;如果占用资源表中不存在该序号,则说明该序号对应的计数器或串口没被使用,在占用资源表还有空闲空间时,将该序号记录到占用资源表中,返回加锁成功(可以同时返回为该计数器或串口分配的锁ID,以便对该计数器或串口解锁时使用)。
本发明提供了一种共享数据一致性的实现方法,应用于包括至少两个处理模块,和锁模块的装置中,所述方法如图7所示,包括以下步骤:
步骤701,所述锁模块预先建立占用资源表,所述占用资源表用于存储被占用的共享资源对应的资源ID;
步骤702,所述处理模块向所述锁模块发送访问请求,所述访问请求中携带要访问的共享资源对应的资源ID;
步骤703,所述锁模块根据要访问的共享资源对应的资源ID在所述占用资源表中进行匹配查找,如果所述占用资源表中没有所述资源ID,则所述资源ID对应的共享资源没有被其他处理模块使用,将所述资源ID添加到所述占用资源表中,并返回加锁成功,如果所述占用资源表中有所述资源ID,则所述资源ID对应的共享资源正被其他处理模块使用,返回加锁失败。当所述锁模块接收处理模块发送的解锁请求,所述解锁请求中携带需解锁的共享数 据对应的资源ID;在所述占用资源表中查找到所述资源ID,将所述资源ID删除。
其中,所述锁模块根据要访问的共享资源对应的资源ID在所述占用资源表中进行匹配查找,具体包括:将所述访问请求中的共享资源对应的资源ID与存放在所述占用资源表中的已存在共享资源对应的资源ID比较,如果有相同,则加锁失败;如果不相同,再判断所述占用资源表中是否还有空间,如果有空间则分配一个空闲空间存放新的共享资源对应的资源ID,返回加锁成功和分配的锁ID,如果没有空间则返回加锁失败。当所述锁模块接收处理模块发送的解锁请求,所述解锁请求中携带需解锁的共享数据对应的锁ID,将所述锁ID对应的资源ID删除。
当多个处理模块同时申请对同一个共享资源时,根据处理模块的优先级选择其中一个,对于未被选中的处理模块直接返回加锁失败,对于被选中的处理模块的访问请求根据要访问的共享资源对应的资源ID进行匹配查找。
步骤704,所述处理模块接收所述锁模块返回的结果,当返回结果为加锁成功,则对所述共享资源进行调用,如果返回结果为加锁失败,则不对所述共享资源进行调用。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可以通过硬件实现,也可以借助软件加必要的通用硬件平台的方式来实现。基于这样的理解,本发明的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
本领域技术人员可以理解附图只是一个优选实施例的示意图,附图中的模块或流程并不一定是实施本发明所必须的。
本领域技术人员可以理解实施例中的装置中的模块可以按照实施例描述进行分布于实施例的装置中,也可以进行相应变化位于不同于本实施例的一个或多个装置中。上述实施例的模块可以合并为一个模块,也可以进一步拆 分成多个子模块。
上述本发明序号仅仅为了描述,不代表实施例的优劣。
以上公开的仅为本发明的几个具体实施例,但是,本发明并非局限于此,任何本领域的技术人员能思之的变化都应落入本发明的保护范围。
Claims (11)
1.一种共享数据一致性的实现方法,应用于包括至少两个处理模块,和锁模块的装置中,其特征在于,所述方法包括以下步骤:
所述锁模块预先建立占用资源表,所述占用资源表用于存储被占用的共享资源对应的资源ID;
所述处理模块向所述锁模块发送访问请求,所述访问请求中携带要访问的共享资源对应的资源ID;
所述锁模块根据要访问的共享资源对应的资源ID在所述占用资源表中进行匹配查找,如果所述占用资源表中没有所述资源ID,则所述资源ID对应的共享资源没有被其他处理模块使用,将所述资源ID添加到所述占用资源表中,并返回加锁成功,如果所述占用资源表中有所述资源ID,则所述资源ID对应的共享资源正被其他处理模块使用,返回加锁失败;
所述处理模块接收所述锁模块返回的结果,当返回结果为加锁成功,则对所述共享资源进行调用,如果返回结果为加锁失败,则不对所述共享资源进行调用。
2.如权利要求1所述的方法,其特征在于,还包括:
所述锁模块接收处理模块发送的解锁请求,所述解锁请求中携带需解锁的共享数据对应的资源ID;在所述占用资源表中查找到所述资源ID,将所述资源ID删除。
3.如权利要求1所述的方法,其特征在于,所述锁模块根据要访问的共享资源对应的资源ID在所述占用资源表中进行匹配查找,具体包括:
将所述访问请求中的共享资源对应的资源ID与存放在所述占用资源表中的已存在共享资源对应的资源ID比较,如果有相同,则加锁失败;如果不相同,再判断所述占用资源表中是否还有空间,如果有空间则分配一个空闲空间存放新的共享资源对应的资源ID,返回加锁成功和分配的锁ID,如果没有空间则返回加锁失败。
4.如权利要求3所述的方法,其特征在于,还包括:
所述锁模块接收处理模块发送的解锁请求,所述解锁请求中携带需解锁 的共享数据对应的锁ID,将所述锁ID对应的资源ID删除。
5.如权利要求1所述的方法,其特征在于,还包括:
当多个处理模块同时申请同一个共享资源时,根据处理模块的优先级选择其中一个,对于未被选中的处理模块直接返回加锁失败,对于被选中的处理模块的访问请求根据要访问的共享资源对应的资源ID进行匹配查找。
6.一种共享数据一致性的实现装置,包括至少两个处理模块,和锁模块,其特征在于,
所述处理模块,用于向所述锁模块发送访问请求,所述访问请求中携带要访问的共享资源对应的资源ID,并接收所述锁模块返回的结果,当返回结果为加锁成功,则对所述共享资源进行调用,如果返回结果为加锁失败,则不对所述共享资源进行调用;
所述锁模块,与所述处理模块连接,用于预先建立占用资源表,所述占用资源表用于存储被占用的共享资源对应的资源ID;在接收到处理模块发送的访问请求后,根据要访问的共享资源对应的资源ID在所述占用资源表中进行匹配查找,如果占用资源表中没有所述资源ID,则将所述资源ID添加到所述占用资源表中,返回加锁成功;如果所述占用资源表中有所述资源ID,则返回加锁失败。
7.如权利要求6所述的实现装置,其特征在于,当共享资源为共享数据时,所述装置还包括:
外部存储模块,与所述处理模块连接,用于存储共享数据。
8.如权利要求6所述的实现装置,其特征在于,所述锁模块,还用于接收所述处理模块完成对数据的修改后发送的解锁请求,所述解锁请求中携带需解锁的共享数据对应的资源ID,在所述占用资源表中查找到所述资源ID,将所述资源ID删除。
9.如权利要求6所述的实现装置,其特征在于,所述锁模块具体包括:
资源标识存储模块,用于预先建立占用资源表,所述占用资源表用于存储被占用的共享资源对应的资源ID;
加锁模块,用于调度多个处理模块的访问请求,所述访问请求中携带要访问的共享资源对应的资源ID;
锁管理模块,分别与所述资源标识存储模块和所述加锁模块连接,用于处理所述加锁模块给出的访问请求,将所述访问请求中的共享资源对应的资源ID与存放在所述占用资源表中的已存在的共享资源对应的资源ID比较,如果有相同,则加锁失败;如果不相同,再判断所述占用资源表是否还有空间,如果有空间则分配一个空闲空间存放新的共享资源对应的资源ID,返回加锁成功和分配的锁ID,如果没有空间则返回加锁失败。
10.如权利要求9所述的实现装置,其特征在于,所述锁模块还包括:
解锁模块,与所述锁管理模块连接,用于接收处理模块发送的解锁请求,所述解锁请求中携带需解锁的共享数据对应的锁ID;将所述解锁请求发送到所述锁管理模块,使所述锁管理模块将所述锁ID对应的资源ID从占用资源表中删除;或
接收处理模块发送的解锁请求,所述解锁请求中携带需解锁的共享数据对应的资源ID;在所述占用资源表中查找到所述资源ID,将所述资源ID删除。
11.如权利要求9所述的实现装置,其特征在于,
所述加锁模块,还用于多个处理模块同时申请同一个共享资源时,根据处理模块的优先级选择其中一个,对于未被选中的处理模块直接返回加锁失败,对于被选中的处理模块的访问请求传递到所述锁管理模块,根据要访问的共享资源对应的资源ID进行匹配查找。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2009101767908A CN101650646B (zh) | 2009-09-22 | 2009-09-22 | 一种共享数据一致性的实现方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2009101767908A CN101650646B (zh) | 2009-09-22 | 2009-09-22 | 一种共享数据一致性的实现方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101650646A CN101650646A (zh) | 2010-02-17 |
CN101650646B true CN101650646B (zh) | 2012-02-08 |
Family
ID=41672889
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2009101767908A Expired - Fee Related CN101650646B (zh) | 2009-09-22 | 2009-09-22 | 一种共享数据一致性的实现方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101650646B (zh) |
Families Citing this family (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102262559B (zh) * | 2010-05-24 | 2013-08-14 | 腾讯科技(深圳)有限公司 | 一种资源共享的方法及系统 |
CN103546508B (zh) * | 2012-07-12 | 2016-08-10 | 阿里巴巴集团控股有限公司 | 信息同步系统和方法 |
CN103546433B (zh) * | 2012-07-12 | 2017-06-30 | 阿里巴巴集团控股有限公司 | 信息同步系统和方法 |
CN103634347B (zh) * | 2012-08-24 | 2019-04-12 | 腾讯科技(深圳)有限公司 | 一种并行业务处理方法、设备及系统 |
CN104346317B (zh) * | 2013-07-23 | 2019-08-27 | 南京中兴软件有限责任公司 | 共享资源访问方法和装置 |
CN103617023B (zh) * | 2013-11-20 | 2016-02-17 | 北京先进数通信息技术股份公司 | 一种系统垃圾资源的回收方法和装置 |
CN104199800A (zh) * | 2014-07-21 | 2014-12-10 | 上海寰创通信科技股份有限公司 | 一种解决多核系统中表项互斥的方法 |
CN105631350B (zh) * | 2015-03-05 | 2018-07-24 | 西安酷派软件科技有限公司 | 数据操作方法、数据操作装置和终端 |
CN105138310B (zh) * | 2015-07-17 | 2018-02-09 | 北京京东尚科信息技术有限公司 | 一种并发访问控制方法和系统 |
CN106991008B (zh) * | 2016-01-20 | 2020-12-18 | 华为技术有限公司 | 一种资源锁管理方法、相关设备及系统 |
CN106528294A (zh) * | 2016-11-04 | 2017-03-22 | 郑州云海信息技术有限公司 | 一种资源池管理方法及系统 |
CN107273214A (zh) * | 2017-06-30 | 2017-10-20 | 郑州云海信息技术有限公司 | 一种基于固态硬盘的多核控制器资源访问方法及其装置 |
CN107402821B (zh) * | 2017-07-03 | 2020-06-30 | 阿里巴巴集团控股有限公司 | 共享资源的访问控制方法、装置和设备 |
CN109063132B (zh) * | 2018-08-02 | 2020-08-25 | 上海达梦数据库有限公司 | 闩锁请求方法、闩锁授权方法、装置及终端设备 |
CN109542625A (zh) * | 2018-11-29 | 2019-03-29 | 郑州云海信息技术有限公司 | 一种存储资源控制方法、装置及电子设备 |
CN109753485B (zh) * | 2018-12-07 | 2021-05-07 | 新华三云计算技术有限公司 | 一种磁盘锁管理方法及装置 |
CN109947575B (zh) * | 2019-03-21 | 2021-08-24 | 恒生电子股份有限公司 | 读写锁的加锁、释放方法及相关系统 |
CN110059111B (zh) * | 2019-04-17 | 2022-02-01 | 珠海金山网络游戏科技有限公司 | 一种数据调用方法、装置、一种计算设备及存储介质 |
CN110096232B (zh) * | 2019-04-25 | 2022-09-09 | 新华三云计算技术有限公司 | 磁盘锁的处理方法、存储单元的创建方法及相关装置 |
CN110837422A (zh) * | 2019-10-12 | 2020-02-25 | 上海眼控科技股份有限公司 | 多线程访问方法、系统、电子终端以及储存介质 |
CN111026336A (zh) * | 2019-12-26 | 2020-04-17 | 中国建设银行股份有限公司 | 一种san存储系统的自动化运维方法及运维系统 |
CN111399991B (zh) * | 2020-06-05 | 2020-09-29 | 腾讯科技(深圳)有限公司 | 虚拟资源加锁方法和装置、存储介质及电子装置 |
CN112231131B (zh) * | 2020-09-28 | 2024-05-28 | 北京金山云网络技术有限公司 | 一种数据库锁的实现方法、装置、设备及可读存储介质 |
CN112380000A (zh) * | 2020-10-23 | 2021-02-19 | 成都佰维存储科技有限公司 | 串口共享方法、装置、可读存储介质及电子设备 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5987550A (en) * | 1997-06-30 | 1999-11-16 | Emc Corporation | Lock mechanism for shared resources in a data processing system |
CN1539110A (zh) * | 2000-07-28 | 2004-10-20 | 辛孚尼系统股份有限公司 | 嵌套数据库的实现方法、系统和数据结构 |
CN1740978A (zh) * | 2004-08-23 | 2006-03-01 | 华为技术有限公司 | 实现共享内存数据库的方法及内存数据库系统 |
CN1920780A (zh) * | 2006-08-15 | 2007-02-28 | 杭州华为三康技术有限公司 | 访问临界区的方法和系统 |
CN1945539A (zh) * | 2006-10-19 | 2007-04-11 | 华为技术有限公司 | 计算机集群系统中共享资源锁分配方法与计算机及集群系统 |
US7328263B1 (en) * | 2001-01-30 | 2008-02-05 | Cisco Technology, Inc. | Controlling access of concurrent users of computer resources in a distributed system using an improved semaphore counting approach |
-
2009
- 2009-09-22 CN CN2009101767908A patent/CN101650646B/zh not_active Expired - Fee Related
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5987550A (en) * | 1997-06-30 | 1999-11-16 | Emc Corporation | Lock mechanism for shared resources in a data processing system |
CN1539110A (zh) * | 2000-07-28 | 2004-10-20 | 辛孚尼系统股份有限公司 | 嵌套数据库的实现方法、系统和数据结构 |
US7328263B1 (en) * | 2001-01-30 | 2008-02-05 | Cisco Technology, Inc. | Controlling access of concurrent users of computer resources in a distributed system using an improved semaphore counting approach |
CN1740978A (zh) * | 2004-08-23 | 2006-03-01 | 华为技术有限公司 | 实现共享内存数据库的方法及内存数据库系统 |
CN1920780A (zh) * | 2006-08-15 | 2007-02-28 | 杭州华为三康技术有限公司 | 访问临界区的方法和系统 |
CN1945539A (zh) * | 2006-10-19 | 2007-04-11 | 华为技术有限公司 | 计算机集群系统中共享资源锁分配方法与计算机及集群系统 |
Also Published As
Publication number | Publication date |
---|---|
CN101650646A (zh) | 2010-02-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101650646B (zh) | 一种共享数据一致性的实现方法及装置 | |
CN110858162B (zh) | 内存管理方法及装置、服务器 | |
US10042678B2 (en) | Lock management method and system, method and apparatus for configuring lock management system | |
CN109643309B (zh) | 用于对跳跃表数据结构执行范围查询的系统和方法 | |
CN102088484B (zh) | 一种分布式文件系统的写锁定方法及系统 | |
US8666958B2 (en) | Approaches to reducing lock communications in a shared disk database | |
CN110188110B (zh) | 一种构建分布式锁的方法及装置 | |
US20070294276A1 (en) | Moving Records Between Partitions | |
KR20060079078A (ko) | 서버 큐잉 시스템 및 방법 | |
CN108038384B (zh) | 一种高安全的集群共享存储虚拟化方法 | |
CN101771723A (zh) | 数据同步方法 | |
CN108268216B (zh) | 数据处理方法、装置及服务器 | |
US6321308B1 (en) | Method and apparatus for managing access requests from a plurality of devices using dual level queue locking scheme and a doubly-linked circular queue | |
CN105138310A (zh) | 一种并发访问控制方法和系统 | |
JP6405255B2 (ja) | 通信システム、キュー管理サーバ、及び、通信方法 | |
CN103716383A (zh) | 一种访问共享资源的方法及装置 | |
CN111163140A (zh) | 资源获取和分配的方法、装置和计算机可读存储介质 | |
CN110659303A (zh) | 一种数据库节点的读写控制方法及装置 | |
US11252121B2 (en) | Message sending method and terminal device | |
US20190146845A1 (en) | Lock Allocation Method and Apparatus, and Computing Device | |
CN104461705B (zh) | 一种业务访问的方法及存储控制器、集群存储系统 | |
CN108134855A (zh) | Arp表管理方法、处理器核心、存储介质、电子设备 | |
EP4425892A1 (en) | Resource operating method and apparatus, electronic device, and storage medium | |
CN109831394B (zh) | 数据处理方法、终端以及计算机存储介质 | |
CN114911632B (zh) | 一种进程间通信的控制方法和系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CP03 | Change of name, title or address | ||
CP03 | Change of name, title or address |
Address after: 310052 Binjiang District Changhe Road, Zhejiang, China, No. 466, No. Patentee after: Xinhua three Technology Co., Ltd. Address before: 310053 Hangzhou hi tech Industrial Development Zone, Zhejiang province science and Technology Industrial Park, No. 310 and No. six road, HUAWEI, Hangzhou production base Patentee before: Huasan Communication Technology Co., Ltd. |
|
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20120208 Termination date: 20200922 |