一种进程锁的处理方法、装置及系统转让专利

申请号 : CN201810068167.X

文献号 : CN108459901B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 彭炯钟联波

申请人 : 深圳市普威技术有限公司

摘要 :

本发明公开了一种进程锁的处理方法、装置及系统,所述方法包括:响应于应用程序发送的进程锁处理请求,对所述进程锁处理请求进行解析,获得应用程序标识信息和进程锁处理类型;根据所述应用程序标识信息,查询预设的进程锁数据库,获得待处理的进程锁和所述进程锁的状态信息;根据所述进程锁处理类型和所述进程锁的状态信息对所述进程锁进行相应的处理,并将处理结果返回至所述应用程序。采用本发明的技术方案能够实现对应用程序资源的合理分配和使用,从而提高应用程序资源的使用效益。

权利要求 :

1.一种进程锁的处理方法,其特征在于,包括:

响应于应用程序发送的进程锁处理请求,对所述进程锁处理请求进行解析,获得应用程序标识信息和进程锁处理类型;

根据所述应用程序标识信息,查询预设的进程锁数据库,获得待处理的进程锁和所述进程锁的状态信息;其中,所述进程锁数据库中存储了与所述应用程序标识信息对应的进程锁的标识信息和状态信息;所述状态信息包括资源数量和使用情况;

根据所述进程锁处理类型和所述进程锁的状态信息对所述进程锁进行相应的处理,并将处理结果返回至所述应用程序。

2.如权利要求1所述的进程锁的处理方法,其特征在于,所述进程锁处理类型为获取进程锁;

则所述根据所述进程锁处理类型和所述进程锁的状态信息对所述进程锁进行相应的处理,并将处理结果返回至所述应用程序,具体包括:根据所述进程锁的状态信息判断所述进程锁的资源数量是否大于零;

若所述进程锁的资源数量大于零,则将所述进程锁配置给所述应用程序,并对所述进程锁的资源数量进行减一操作,同时生成获取成功信息返回至所述应用程序;

若所述进程锁的资源数量不大于零,则不对所述进程锁进行处理,并将所述进程锁处理请求加入预设的获取进程锁队列,等待被唤醒。

3.如权利要求1所述的进程锁的处理方法,其特征在于,所述进程锁处理类型为释放进程锁;

则所述根据所述进程锁处理类型和所述进程锁的状态信息对所述进程锁进行相应的处理,并将处理结果返回至所述应用程序,具体包括:根据所述进程锁的状态信息判断所述应用程序是否已获取所述进程锁;

若所述应用程序未获取所述进程锁,则不对所述进程锁进行处理,并生成释放错误信息返回至所述应用程序;

若所述应用程序已获取所述进程锁,则对所述进程锁进行释放处理,并对所述进程锁的资源数量进行加一操作,同时生成释放成功信息返回至所述应用程序;唤醒预设的获取进程锁队列中存储的进程锁处理请求进行相应的处理。

4.如权利要求1所述的进程锁的处理方法,其特征在于,所述进程锁数据库包括进程锁连接数据库和进程锁资源数据库。

5.如权利要求4所述的进程锁的处理方法,其特征在于,在所述响应于应用程序发送的进程锁处理请求,对所述进程锁处理请求进行解析,获得应用程序标识信息和进程锁处理类型之前,还包括:当接收到进程锁连接请求时,根据所述进程锁连接请求获得所述应用程序标识信息和待连接的进程锁标识信息;其中,所述应用程序标识信息包括进程标识码和线程标识码;

将所述应用程序标识信息和所述进程锁标识信息加入所述进程锁连接数据库;

则所述根据所述应用程序标识信息,查询预设的进程锁数据库,获得待处理的进程锁和所述进程锁的状态信息,具体包括:根据所述应用程序标识信息,查询所述进程锁连接数据库,获得所述进程锁标识信息;

根据所述进程锁标识信息,获得待处理的所述进程锁;

根据所述进程锁,查询所述进程锁资源数据库;获得所述进程锁的状态信息。

6.如权利要求1所述的进程锁的处理方法,其特征在于,所述进程锁的处理方法还包括:若无法根据所述应用程序标识信息获得待处理的所述进程锁,则生成进程锁错误信息并返回至所述应用程序。

7.如权利要求4所述的进程锁的处理方法,其特征在于,所述进程锁的处理方法还包括:每隔一定的预设时间查询所述进程锁资源数据库,判断获取进程锁的应用程序是否存在;

当获取进程锁的应用程序不存在时,生成应用程序错误信息,同时释放对应的进程锁,并对对应的进程锁的资源数量进行加一操作;

唤醒预设的获取进程锁队列中存储的进程锁处理请求进行相应的处理。

8.一种进程锁的处理装置,其特征在于,包括:

进程锁处理请求解析模块,用于响应于应用程序发送的进程锁处理请求,对所述进程锁处理请求进行解析,获得应用程序标识信息和进程锁处理类型;

进程锁及状态信息获取模块,用于根据所述应用程序标识信息,查询预设的进程锁数据库,获得待处理的进程锁和所述进程锁的状态信息;其中,所述进程锁数据库中存储了与所述应用程序标识信息对应的进程锁的标识信息和状态信息;所述状态信息包括资源数量和使用情况;以及,进程锁处理模块,用于根据所述进程锁处理类型和所述进程锁的状态信息对所述进程锁进行相应的处理,并将处理结果返回至所述应用程序。

9.一种进程锁的处理系统,其特征在于,包括控制中心和至少一个应用程序;其中,所述控制中心用于执行如权利要求1至7中任一项所述的进程锁的处理方法;

每一所述应用程序用于将进程锁连接请求和进程锁处理请求发送至所述控制中心,并根据接收到的所述控制中心返回的信息进行相应的处理。

10.如权利要求9所述的进程锁的处理系统,其特征在于,所述控制中心与每一所述应用程序之间通过Unix域套接字进行通信,所述控制中心创建第一套接字和第二套接字,每一所述应用程序分别创建连接套接字和处理套接字;其中,所述第一套接字与所述连接套接字进行通信,所述第二套接字与所述处理套接字进行通信。

说明书 :

一种进程锁的处理方法、装置及系统

技术领域

[0001] 本发明涉及计算机技术领域,尤其涉及一种进程锁的处理方法、装置及系统。

背景技术

[0002] 随着计算机技术的快速发展,多任务、多进程和多线程的技术已经得到了非常广泛的应用,在多任务系统下,当某一进程等待使用某一应用程序资源,而该应用程序资源又被等待使用该进程正在使用的应用程序资源的另一进程使用时,就产生了一种进程互相等待的现象,即形成了死锁。由于应用程序资源占用是互斥的,因此,在出现死锁的情况下,当某个进程提出相应的应用程序资源使用申请后,若无外力协助,将永远得不到该应用程序资源,从而无法开始或继续运行。
[0003] 为了解决上述问题,在现有技术公开的技术方案中,每当接收到对某一应用程序资源的调用请求时,首先创建一个针对该调用请求的死锁检测结点,并将该死锁检测结点插入至一个队列中,随后,实时监控该队列中各死锁检测结点的存在时间是否超过死锁时间阈值,如果检测到任一死锁检测结点的存在时间超过了死锁时间阈值,则判定该死锁检测结点所对应的被调用的应用程序资源出现了死锁,并生成相应的死锁提醒信息,以提醒处理人员对该死锁进行处理。
[0004] 由此可见,现有技术仅提供了一种对死锁的出现进行监控和判断的方法,而出现死锁时需要由处理人员来对死锁进行处理,并且当出现的死锁个数较多时,可能需要花费较长时间来等待处理人员进行处理,在等待的过程中死锁中的应用程序资源仍然无法使用,另外,现有技术通过对死锁检测结点的监控来对应用程序资源进行调控,而不同的应用程序资源对应的死锁时间阈值不同,根据单一的死锁时间阈值标准进行死锁判断的结果并不准确,因此,并不能够合理的调控应用程序资源,导致应用程序资源的使用效益十分低下。

发明内容

[0005] 本发明实施例所要解决的技术问题在于,提供一种进程锁的处理方法、装置及系统,能够实现对应用程序资源的合理分配和使用,从而提高应用程序资源的使用效益。
[0006] 为了解决上述技术问题,本发明实施例提供了一种进程锁的处理方法,包括:
[0007] 响应于应用程序发送的进程锁处理请求,对所述进程锁处理请求进行解析,获得应用程序标识信息和进程锁处理类型;
[0008] 根据所述应用程序标识信息,查询预设的进程锁数据库,获得待处理的进程锁和所述进程锁的状态信息;其中,所述进程锁数据库中存储了与所述应用程序标识信息对应的进程锁的标识信息和状态信息;所述状态信息包括资源数量和使用情况;
[0009] 根据所述进程锁处理类型和所述进程锁的状态信息对所述进程锁进行相应的处理,并将处理结果返回至所述应用程序。
[0010] 进一步地,所述进程锁处理类型为获取进程锁;
[0011] 则所述根据所述进程锁处理类型和所述进程锁的状态信息对所述进程锁进行相应的处理,并将处理结果返回至所述应用程序,具体包括:
[0012] 根据所述进程锁的状态信息判断所述进程锁的资源数量是否大于零;
[0013] 若所述进程锁的资源数量大于零,则将所述进程锁配置给所述应用程序,并对所述进程锁的资源数量进行减一操作,同时生成获取成功信息返回至所述应用程序;
[0014] 若所述进程锁的资源数量不大于零,则不对所述进程锁进行处理,并将所述进程锁处理请求加入预设的获取进程锁队列,等待被唤醒。
[0015] 进一步地,所述进程锁处理类型为释放进程锁;
[0016] 则所述根据所述进程锁处理类型和所述进程锁的状态信息对所述进程锁进行相应的处理,并将处理结果返回至所述应用程序,具体包括:
[0017] 根据所述进程锁的状态信息判断所述应用程序是否已获取所述进程锁;
[0018] 若所述应用程序未获取所述进程锁,则不对所述进程锁进行处理,并生成释放错误信息返回至所述应用程序;
[0019] 若所述应用程序已获取所述进程锁,则对所述进程锁进行释放处理,并对所述进程锁的资源数量进行加一操作,同时生成释放成功信息返回至所述应用程序;唤醒预设的获取进程锁队列中存储的进程锁处理请求进行相应的处理。
[0020] 进一步地,所述进程锁数据库包括进程锁连接数据库和进程锁资源数据库。
[0021] 进一步地,在所述响应于应用程序发送的进程锁处理请求,对所述进程锁处理请求进行解析,获得应用程序标识信息和进程锁处理类型之前,还包括:
[0022] 当接收到进程锁连接请求时,根据所述进程锁连接请求获得所述应用程序标识信息和待连接的进程锁标识信息;其中,所述应用程序标识信息包括进程标识码和线程标识码;
[0023] 将所述应用程序标识信息和所述进程锁标识信息加入所述进程锁连接数据库;
[0024] 则所述根据所述应用程序标识信息,查询预设的进程锁数据库,获得待处理的进程锁和所述进程锁的状态信息,具体包括:
[0025] 根据所述应用程序标识信息,查询所述进程锁连接数据库,获得所述进程锁标识信息;
[0026] 根据所述进程锁标识信息,获得待处理的所述进程锁;
[0027] 根据所述进程锁,查询所述进程锁资源数据库;获得所述进程锁的状态信息。
[0028] 进一步地,所述进程锁的处理方法还包括:
[0029] 若无法根据所述应用程序标识信息获得待处理的所述进程锁,则生成进程锁错误信息并返回至所述应用程序。
[0030] 进一步地,所述进程锁的处理方法还包括:
[0031] 每隔一定的预设时间查询所述进程锁资源数据库,判断获取进程锁的应用程序是否存在;
[0032] 当获取进程锁的应用程序不存在时,生成应用程序错误信息,同时释放对应的进程锁,并对对应的进程锁的资源数量进行加一操作;
[0033] 唤醒预设的获取进程锁队列中存储的进程锁处理请求进行相应的处理。
[0034] 为了解决上述技术问题,本发明实施例还提供了一种进程锁的处理装置,包括:
[0035] 进程锁处理请求解析模块,用于响应于应用程序发送的进程锁处理请求,对所述进程锁处理请求进行解析,获得应用程序标识信息和进程锁处理类型;
[0036] 进程锁及状态信息获取模块,用于根据所述应用程序标识信息,查询预设的进程锁数据库,获得待处理的进程锁和所述进程锁的状态信息;其中,所述进程锁数据库中存储了与所述应用程序标识信息对应的进程锁的标识信息和状态信息;所述状态信息包括资源数量和使用情况;以及,
[0037] 进程锁处理模块,用于根据所述进程锁处理类型和所述进程锁的状态信息对所述进程锁进行相应的处理,并将处理结果返回至所述应用程序。
[0038] 为了解决上述技术问题,本发明实施例还提供了一种进程锁的处理系统,包括控制中心和至少一个应用程序;其中,
[0039] 所述控制中心用于执行上述任一项所述的进程锁的处理方法;
[0040] 每一所述应用程序用于将进程锁连接请求和进程锁处理请求发送至所述控制中心,并根据接收到的所述控制中心返回的信息进行相应的处理。
[0041] 进一步地,所述控制中心与每一所述应用程序之间通过Unix域套接字进行通信,所述控制中心创建第一套接字和第二套接字,每一所述应用程序分别创建连接套接字和处理套接字;其中,所述第一套接字与所述连接套接字进行通信,所述第二套接字与所述处理套接字进行通信。
[0042] 与现有技术相比,本发明实施例提供了一种进程锁的处理方法、装置及系统,通过对进程锁处理请求进行解析以获得应用程序标识信息和进程锁处理类型,根据应用程序标识信息查询预设的进程锁数据库以获得待处理的进程锁和进程锁的状态信息,并根据进程锁处理类型和进程锁的状态信息对进程锁进行相应的处理,能够解决现有技术中无法合理的调控应用程序资源,导致应用程序资源的使用效益十分低下的问题,实现对应用程序资源的合理分配和使用,从而提高应用程序资源的使用效益。

附图说明

[0043] 图1是本发明提供的一种进程锁的处理系统的一个优选实施例的结构框图;
[0044] 图2是本发明提供的一种进程锁的处理方法的一个优选实施例的流程图;
[0045] 图3是本发明提供的一种进程锁的处理方法的步骤S13的一个优选实施例的具体流程图;
[0046] 图4是本发明提供的一种进程锁的处理方法的步骤S13的另一个优选实施例的具体流程图;
[0047] 图5是本发明提供的一种进程锁的处理方法的另一个优选实施例的流程图;
[0048] 图6是本发明提供的一种进程锁的处理装置的一个优选实施例的结构框图。

具体实施方式

[0049] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本技术领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0050] 本发明实施例提供了一种进程锁的处理系统。
[0051] 参见图1所示,是本发明提供的一种进程锁的处理系统的一个优选实施例的结构框图,包括控制中心10和至少一个应用程序20;其中,
[0052] 所述控制中心10用于执行本发明任一实施例所述的进程锁的处理方法;
[0053] 每一所述应用程序20用于将进程锁连接请求和进程锁处理请求发送至所述控制中心10,并根据接收到的所述控制中心10返回的信息进行相应的处理。
[0054] 需要说明的是,每一种进程锁对应一种应用程序资源,不同的应用程序资源分别用不同的进程锁表示。
[0055] 具体的,该进程锁的处理过程主要由进程锁连接阶段和进程锁处理阶段组成。
[0056] 在进程锁连接阶段,当任一应用程序想要调用某一应用程序资源时,首先向控制中心发送进程锁连接请求,该进程锁连接请求中包含上述应用程序的标识信息(如进程ID和线程ID)和上述应用程序想要调用的应用程序资源所对应的进程锁的标识信息;随后,控制中心对接收到的进程锁连接请求进行解析,从而获得上述应用程序的进程ID和线程ID以及相应的进程锁的标识信息,并将上述应用程序的进程ID和线程ID以及相应的进程锁的标识信息保存至预先设置的进程锁连接数据库。
[0057] 在进程锁处理阶段,当应用程序想要处理进程锁时,首先向控制中心发送进程锁处理请求,该进程锁处理请求中包含上述应用程序的进程ID和线程ID以及进程锁处理类型(如获取进程锁或释放进程锁);随后,控制中心对接收到的进程锁处理请求进行解析,从而获得上述应用程序的进程ID和线程ID以及相应的进程锁处理类型,并根据上述应用程序的进程ID和线程ID查询预先设置的进程锁连接数据库,从而获得上述应用程序所对应的进程锁的标识信息以确定待处理的进程锁,再根据确定的待处理的进程锁查询预先设置的进程锁资源数据库,从而获得该进程锁的状态信息(如资源数量和使用情况);接着,控制中心根据进程锁处理类型和该进程锁的状态信息对该进程锁进行相应的处理,并将处理结果返回至上述应用程序,例如,当进程锁的处理类型为获取进程锁时,控制中心根据进程锁的资源数量进行相应的处理,若资源数量大于零,则将该进程锁所对应的应用程序资源分配给上述应用程序使用,并对进程锁资源数据库中该进程锁的资源数量进行减一操作,同时生成获取成功信息返回至上述应用程序;最后,上述应用程序根据接收到的控制中心返回的信息进行相应的处理,例如,当接收到获取成功信息时,表示相应的应用程序资源可用,上述应用程序则调用该应用程序资源。
[0058] 在应用程序等待控制中心返回信息的过程中,如果等待时间超过了一定的预设时间(预设时间可根据实际需要进行设置),而该应用程序仍未接收到控制中心返回的处理结果信息,表示进程锁处理失败,该应用程序则自动继续往下运行,并不会一直处于等待状态。
[0059] 需要说明的是,在该进程锁的处理过程中,每当有应用程序向控制中心发送进程锁连接请求时,控制中心均会将解析获得的应用程序的进程ID和线程ID以及相应的进程锁的标识信息保存至预先设置的进程锁连接数据库。
[0060] 需要进一步说明的是,进程锁的处理系统所包括的控制中心和至少一个应用程序,可以是同一个设备内的控制中心和应用程序,也可以是不同的设备内的应用程序共用一个控制中心。
[0061] 在另一个优选实施例中,所述控制中心与每一所述应用程序之间通过Unix域套接字进行通信,所述控制中心创建第一套接字和第二套接字,每一所述应用程序分别创建连接套接字和处理套接字;其中,所述第一套接字与所述连接套接字进行通信,所述第二套接字与所述处理套接字进行通信。
[0062] 具体的,应用程序通过连接套接字将应用程序的进程锁连接请求发送至控制中心的第一套接字,通过处理套接字将应用程序的进程锁处理请求发送至控制中心的第二套接字;控制中心通过第二套接字将相应的进程锁的处理结果返回至应用程序的处理套接字。
[0063] 本发明实施例所提供的一种进程锁的处理系统,通过控制中心对接收到的进程锁连接请求和进程锁处理请求进行解析,并结合预先设置的进程锁连接数据库和进程锁资源数据库,对进程锁进行统一的宏观调控和分配,解决了现有技术中无法合理的调控应用程序资源,导致应用程序资源的使用效益十分低下的问题,实现了对应用程序资源的合理分配和使用,从而提高了应用程序资源的使用效益。
[0064] 另外,该进程锁的处理系统通过Unix域套接字进行通信,利用套接字的阻塞机制代替进程锁的实现;利用了超时功能,即使发生死锁也能使应用程序继续运行;控制中心实时返回进程锁的处理结果,方便应用程序观测;进程锁的处理可根据实际应用场景和需求定制,扩展性高。
[0065] 本发明实施例还提供了一种进程锁的处理方法,该进程锁的处理方法由上述进程锁的处理系统中的控制中心执行。
[0066] 参见图2所示,是本发明提供的一种进程锁的处理方法的一个优选实施例的流程图,包括步骤S11至S13:
[0067] 步骤S11、响应于应用程序发送的进程锁处理请求,对所述进程锁处理请求进行解析,获得应用程序标识信息和进程锁处理类型;
[0068] 步骤S12、根据所述应用程序标识信息,查询预设的进程锁数据库,获得待处理的进程锁和所述进程锁的状态信息;
[0069] 步骤S13、根据所述进程锁处理类型和所述进程锁的状态信息对所述进程锁进行相应的处理,并将处理结果返回至所述应用程序。
[0070] 具体的,步骤S11中控制中心对接收到的应用程序发送的进程锁处理请求进行解析,从而获得应用程序的标识信息(如进程ID和线程ID)以及进程锁处理类型(如获取进程锁或释放进程锁)。
[0071] 具体的,步骤S12中控制中心根据应用程序的进程ID和线程ID查询预先设置的进程锁数据库,从而确定待处理的进程锁并获得该进程锁的状态信息(如资源数量和使用情况),其中,根据使用情况可以判断进程锁已被哪一个或哪些应用程序获取。
[0072] 具体的,步骤S13中控制中心根据进程锁处理类型为获取进程锁还是释放进程锁,结合进程锁的资源数量和使用情况对该进程锁进行相应的处理,其中,当进程锁处理类型为获取进程锁时,结合进程锁的资源数量进行处理;当进程锁处理类型为释放进程锁时,结合进程锁的使用情况进行处理;并且将处理结果返回至应用程序。
[0073] 结合图3所示,是本发明提供的一种进程锁的处理方法的步骤S13的一个优选实施例的具体流程图,所述进程锁处理类型为获取进程锁;
[0074] 则所述根据所述进程锁处理类型和所述进程锁的状态信息对所述进程锁进行相应的处理,并将处理结果返回至所述应用程序,具体包括步骤S1311至步骤S1313:
[0075] 步骤S1311、根据所述进程锁的状态信息判断所述进程锁的资源数量是否大于零;
[0076] 步骤S1312、若所述进程锁的资源数量大于零,则将所述进程锁配置给所述应用程序,并对所述进程锁的资源数量进行减一操作,同时生成获取成功信息返回至所述应用程序;
[0077] 步骤S1313、若所述进程锁的资源数量不大于零,则不对所述进程锁进行处理,并将所述进程锁处理请求加入预设的获取进程锁队列,等待被唤醒。
[0078] 本实施例为获取进程锁处理过程,具体的,当应用程序想要获取进程锁时,控制中心根据查询预先设置的进程锁数据库获得的进程锁的资源数量判断待获取的进程锁的资源数量是否大于零,当待获取的进程锁的资源数量大于零时,表示能够分配该进程锁,即对应的应用程序资源可用,控制中心则将该进程锁分配给上述应用程序,并且将进程锁数据库中该进程锁对应的资源数量减一,同时生成获取成功信息返回给上述应用程序;当待获取的进程锁的资源数量不大于零时,表示该进程锁全部被占用,不能分配,即对应的应用程序资源不可以,控制中心则不对该进程锁进行任何处理,而是把上述应用程序的进程锁处理请求加入预先设置的获取进程锁队列,等待下一次的唤醒处理。
[0079] 结合图4所示,是本发明提供的一种进程锁的处理方法的步骤S13的另一个优选实施例的具体流程图,所述进程锁处理类型为释放进程锁;
[0080] 则所述根据所述进程锁处理类型和所述进程锁的状态信息对所述进程锁进行相应的处理,并将处理结果返回至所述应用程序,具体包括步骤S1321至步骤S1323:
[0081] 步骤S1321、根据所述进程锁的状态信息判断所述应用程序是否已获取所述进程锁;
[0082] 步骤S1322、若所述应用程序未获取所述进程锁,则不对所述进程锁进行处理,并生成释放错误信息返回至所述应用程序;
[0083] 步骤S1323、若所述应用程序已获取所述进程锁,则对所述进程锁进行释放处理,并对所述进程锁的资源数量进行加一操作,同时生成释放成功信息返回至所述应用程序;唤醒预设的获取进程锁队列中存储的进程锁处理请求进行相应的处理。
[0084] 本实施例为释放进程锁处理过程,具体的,当应用程序想要释放进程锁时,控制中心根据查询预先设置的进程锁数据库获得的进程锁的使用情况判断上述应用程序是否已经获得了该进程锁,当上述应用程序没有获取该进程锁而要释放进程锁时,表示这是一个异常操作,控制中心则不对该进程锁进行任何处理,并生成释放错误信息返回给上述应用程序;当上述应用程序已经获取该进程锁且要释放进程锁时,控制中心则对该进程锁进行释放处理,将进程锁数据库中该进程锁对应的资源数量加一,并且生成释放成功信息返回给上述应用程序;同时,控制中心会唤醒预先设置的获取进程锁队列中存储的进程锁处理请求进入相应的获取进程锁处理过程,将已释放的进程锁分配给需要获取该进程锁的应用程序。
[0085] 在另一个优选实施例中,所述进程锁数据库包括进程锁连接数据库和进程锁资源数据库。
[0086] 在本实施例中,进程锁数据库用于存储应用程序的标识信息(如进程ID和线程ID)和应用程序想要调用的应用程序资源所对应的进程锁的标识信息;进程锁资源数据库用于存储所有应用程序资源所对应的进程锁的状态信息(如资源数量和使用情况),其中,根据使用情况可以判断进程锁已被哪一个或哪些应用程序获取。
[0087] 在又一个优选实施例中,在所述响应于应用程序发送的进程锁处理请求,对所述进程锁处理请求进行解析,获得应用程序标识信息和进程锁处理类型之前,还包括:
[0088] 当接收到进程锁连接请求时,根据所述进程锁连接请求获得所述应用程序标识信息和待连接的进程锁标识信息;其中,所述应用程序标识信息包括进程标识码和线程标识码;
[0089] 将所述应用程序标识信息和所述进程锁标识信息加入所述进程锁连接数据库;
[0090] 则所述根据所述应用程序标识信息,查询预设的进程锁数据库,获得待处理的进程锁和所述进程锁的状态信息,具体包括:
[0091] 根据所述应用程序标识信息,查询所述进程锁连接数据库,获得所述进程锁标识信息;
[0092] 根据所述进程锁标识信息,获得待处理的所述进程锁;
[0093] 根据所述进程锁,查询所述进程锁资源数据库;获得所述进程锁的状态信息。
[0094] 在本实施例中,每当控制中心接收到应用程序发送的进程锁连接请求时,均会对进程锁连接请求进行解析,从而获得上述应用程序的标识信息(如进程ID和线程ID)和上述应用程序想要连接的进程锁的标识信息,并将解析获得的应用程序的进程ID和线程ID以及相应的进程锁的标识信息保存至预先设置的进程锁连接数据库。
[0095] 当控制中心接收到应用程序发送的进程锁处理请求并解析获得该应用程序的进程ID和线程ID之后,根据该应用程序的进程ID和线程ID查询预先设置的进程锁连接数据库,从而获得该应用程序所对应的进程锁的标识信息以确定待处理的进程锁;根据确定的待处理的进程锁查询预先设置的进程锁资源数据库,从而获得该进程锁的状态信息(如资源数量和使用情况)。
[0096] 需要说明的是,进程锁的状态信息可以设置相应的数组进行表示,例如,设计一个int型数组(如intl_lockArray[NUM],NUM表示进程锁的种类个数),数组中的每一个元素代表一种进程锁,根据应用程序需要的进程锁的标识信息能唯一定位到一个int型变量。进程锁的资源数量由代码编写者自定义(一般的资源总量都是1),当有应用程序想要获取进程锁时,先根据对应的进程锁的标识信息,找到int数组中的具体一个l_lockArray[x],如果该值大于0,说明该进程锁的资源有剩余,能够被获取;如果该值小于等于0,说明该进程锁的资源没有剩余,无法被获取。
[0097] 在又一个优选实施例中,所述进程锁的处理方法还包括:
[0098] 若无法根据所述应用程序标识信息获得待处理的所述进程锁,则生成进程锁错误信息并返回至所述应用程序。
[0099] 可以理解的,在预先设置的进程锁连接数据库中,当控制中心根据应用程序的标识信息无法找到与之对应的进程锁的标识信息时,说明该应用程序没有成功发送进程锁连接请求至控制中心,进程锁连接数据库中没有存储相应的数据信息,因此,控制中心会生成进程锁错误信息返回给该应用程序,提醒该应用程序在成功发送进程锁连接请求之后再发送进程锁处理请求。
[0100] 参见图5所示,是本发明提供的一种进程锁的处理方法的另一个优选实施例的流程图,所述进程锁的处理方法还包括步骤S21至S23:
[0101] S21、每隔一定的预设时间查询所述进程锁资源数据库,判断获取进程锁的应用程序是否存在;
[0102] S22、当获取进程锁的应用程序不存在时,生成应用程序错误信息,同时释放对应的进程锁,并对对应的进程锁的资源数量进行加一操作;
[0103] S23、唤醒预设的获取进程锁队列中存储的进程锁处理请求进行相应的处理。
[0104] 本实施例为僵死进程的检测和处理过程,当应用程序已经退出了对某一应用程序资源的调用,但是该应用程序资源对应的进程锁并未被释放,上述应用程序就叫做僵死进程。
[0105] 具体的,控制中心每隔一定的预设时间(如2秒)对预先设置的进程锁资源数据库进行查询,检测已经获取了进程锁的应用程序是否仍然存在,即获取该进程锁的应用程序是否仍然正在调用该进程锁所对应的应用程序资源,当检测到某一应用程序在没有释放进程锁的情况下就退出了对相应的应用程序资源的调用时,就生成应用程序错误信息,并且释放该进程锁,将进程锁资源数据库中该进程锁对应的资源数量加一,同时,控制中心会唤醒预先设置的获取进程锁队列中存储的进程锁处理请求进入相应的获取进程锁处理过程,将已释放的进程锁分配给需要获取该进程锁的应用程序。
[0106] 本发明实施例所提供的一种进程锁的处理方法,通过对进程锁处理请求进行解析以获得应用程序标识信息和进程锁处理类型,根据应用程序标识信息查询预设的进程锁数据库以获得待处理的进程锁和进程锁的状态信息,并根据进程锁处理类型和进程锁的状态信息对进程锁进行相应的处理,实现了对进程锁的统一分配和调控,进而使得应用程序资源能够得到合理的分配和使用,从而能够大大提高应用程序资源的使用效益。
[0107] 本发明实施例还提供了一种进程锁的处理装置,能够实现上述任一实施例中的进程锁的处理方法的所有流程。
[0108] 参见图6所示,是本发明提供的一种进程锁的处理装置的一个优选实施例的结构框图,包括:
[0109] 进程锁处理请求解析模块11,用于响应于应用程序发送的进程锁处理请求,对所述进程锁处理请求进行解析,获得应用程序标识信息和进程锁处理类型;
[0110] 进程锁及状态信息获取模块12,用于根据所述应用程序标识信息,查询预设的进程锁数据库,获得待处理的进程锁和所述进程锁的状态信息;以及,
[0111] 进程锁处理模块13,用于根据所述进程锁处理类型和所述进程锁的状态信息对所述进程锁进行相应的处理,并将处理结果返回至所述应用程序。
[0112] 具体的,进程锁处理请求解析模块11对接收到的应用程序发送的进程锁处理请求进行解析,从而获得应用程序的标识信息(如进程ID和线程ID)以及进程锁处理类型(如获取进程锁或释放进程锁)。
[0113] 具体的,进程锁及状态信息获取模块12根据应用程序的进程ID和线程ID查询预先设置的进程锁数据库,从而确定待处理的进程锁并获得该进程锁的状态信息(如资源数量和使用情况),其中,根据使用情况可以判断进程锁已被哪一个或哪些应用程序获取。
[0114] 具体的,进程锁处理模块13根据进程锁处理类型为获取进程锁还是释放进程锁,结合进程锁的资源数量和使用情况对该进程锁进行相应的处理,其中,当进程锁处理类型为获取进程锁时,结合进程锁的资源数量进行处理;当进程锁处理类型为释放进程锁时,结合进程锁的使用情况进行处理;并且将处理结果返回至应用程序。
[0115] 优选地,所述进程锁处理类型为获取进程锁,则所述进程锁处理模块13具体包括:
[0116] 第一判断单元,用于根据所述进程锁的状态信息判断所述进程锁的资源数量是否大于零;
[0117] 进程锁分配单元,用于若所述进程锁的资源数量大于零,则将所述进程锁配置给所述应用程序,并对所述进程锁的资源数量进行减一操作,同时生成获取成功信息返回至所述应用程序;以及,
[0118] 获取进程锁队列更新单元,用于若所述进程锁的资源数量不大于零,则不对所述进程锁进行处理,并将所述进程锁处理请求加入预设的获取进程锁队列,等待被唤醒。
[0119] 优选地,所述进程锁处理类型为释放进程锁,则所述进程锁处理模块13具体包括:
[0120] 第二判断单元,用于根据所述进程锁的状态信息判断所述应用程序是否已获取所述进程锁;
[0121] 释放错误处理单元,用于若所述应用程序未获取所述进程锁,则不对所述进程锁进行处理,并生成释放错误信息返回至所述应用程序;以及,
[0122] 进程锁释放单元,用于若所述应用程序已获取所述进程锁,则对所述进程锁进行释放处理,并对所述进程锁的资源数量进行加一操作,同时生成释放成功信息返回至所述应用程序;唤醒预设的获取进程锁队列中存储的进程锁处理请求进行相应的处理。
[0123] 优选地,所述进程锁数据库包括进程锁连接数据库和进程锁资源数据库。
[0124] 优选地,所述进程锁的处理装置还包括:
[0125] 进程锁连接请求解析模块,用于当接收到进程锁连接请求时,根据所述进程锁连接请求获得所述应用程序标识信息和待连接的进程锁标识信息;其中,所述应用程序标识信息包括进程标识码和线程标识码;以及,
[0126] 进程锁连接数据库更新模块,用于将所述应用程序标识信息和所述进程锁标识信息加入所述进程锁连接数据库;
[0127] 则所述进程锁及状态信息获取模块12具体包括:
[0128] 进程锁查询单元,用于根据所述应用程序标识信息,查询所述进程锁连接数据库,获得所述进程锁标识信息;
[0129] 进程锁识别单元,用于根据所述进程锁标识信息,获得待处理的所述进程锁;以及,
[0130] 状态信息获取单元,用于根据所述进程锁,查询所述进程锁资源数据库;获得所述进程锁的状态信息。
[0131] 优选地,所述进程锁的处理装置还包括:
[0132] 进程锁错误处理模块,用于若无法根据所述应用程序标识信息获得待处理的所述进程锁,则生成进程锁错误信息并返回至所述应用程序。
[0133] 优选地,所述进程锁的处理装置还包括:
[0134] 进程锁资源数据库查询模块,用于每隔一定的预设时间查询所述进程锁资源数据库,判断获取进程锁的应用程序是否存在;
[0135] 应用程序错误处理模块,用于当获取进程锁的应用程序不存在时,生成应用程序错误信息,同时释放对应的进程锁,并对对应的进程锁的资源数量进行加一操作;以及,[0136] 获取进程锁队列唤醒模块,用于唤醒预设的获取进程锁队列中存储的进程锁处理请求进行相应的处理。
[0137] 本发明实施例所提供的一种进程锁的处理装置,通过对进程锁处理请求进行解析以获得应用程序标识信息和进程锁处理类型,根据应用程序标识信息查询预设的进程锁数据库以获得待处理的进程锁和进程锁的状态信息,并根据进程锁处理类型和进程锁的状态信息对进程锁进行相应的处理,实现了对进程锁的统一分配和调控,进而使得应用程序资源能够得到合理的分配和使用,从而能够大大提高应用程序资源的使用效益。
[0138] 以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变形,这些改进和变形也应视为本发明的保护范围。