并发申请资源状态的方法与流程

文档序号:29914347发布日期:2022-05-06 03:17阅读:81来源:国知局
并发申请资源状态的方法与流程

1.本技术实施例涉及数据通信技术领域,尤其涉及并发申请资源状态的方法。


背景技术:

2.现有的多任务竞争保护锁,按照应用复杂度,可分为基础锁和高级锁两大类,其中:
3.一、基础锁,一般由操作系统直接提供,常见有:原子操作(atomic)、互斥体(mutex)、信号量(semaphore)、条件量(condition)等。
4.二、高级锁,通常由开发语言编译器封装提供,用于保护具备某种应用特性的共享资源。一般通过组合应用基础锁,封装保护逻辑,来扩展定义一种高级的保护方案。譬如读写锁,就适用于读多写少的共享资源,在多个任务同时读访问资源时,共享效率远高于普通的互斥锁。
5.资源状态的保护和切换并没有标准的解决方案。通常的实现方法有如下三种:
6.方法1、在单任务环境,资源的状态无需保护,可以随时按需访问和切换。
7.方法2、在多任务环境,资源由一个任务全权维护。其它任务对此资源的并发访问,都排队在此任务的队列里,依次串行处理。
8.方法3、在多任务环境,资源的状态使用互斥锁保护。所有对此资源的并发访问,都被互斥锁锁定,排队在互斥锁的队列里,依次串行处理。
9.方法1显然只适用于简单的应用环境,常见的系统,软件通常都是多任务的。
10.方法2和方法3的并发访问效率相差不大,只是方法2实现更复杂一些,涉及到任务间的交互,通常需要消息队列以及条件量等配合使用。相较而言,方法3更简洁,仅需互斥锁的访问,即可达到同样的效果。因此,方法3是现在最常用的状态保护方法。
11.方法3使用互斥锁来保护资源的状态,虽然方案可行;但是,会极大地降低并发访问效率。如果用读写锁保护资源的一个状态,至少可以提高此状态下大量读访问的并发率。但是,读写锁却无法满足资源状态保护和切换的所有需要。一个资源的每个状态都需要一个读写锁来保护,而状态的切换还需要另外的互斥锁保护。


技术实现要素:

12.本技术实施例提出并发申请资源状态的方法及可读存储介质和电子设备,以提高并发访问资源状态的效率。
13.本技术实施例的技术方案是这样实现的:
14.一种并发申请资源状态的方法,该方法包括:
15.接收到申请第一资源的第一状态的第一任务;
16.若查询到第一资源的第二状态正在被其它任务使用;
17.阻塞第一任务,且,当检测到针对第一资源的第二状态的所有任务都执行完毕时,释放对申请第一资源的所有状态的所有任务的阻塞;
18.其中,第一资源包括第一状态和第二状态在内的互斥的多种状态。
19.所述查询到第一资源的第二状态正在被其它任务使用,包括:
20.判断第一资源的第二状态的引用计数是否为0,若不为0,则确定第一资源的第二状态正在被其它任务使用;
21.所述当检测到针对第一资源的第二状态的所有任务都执行完毕,包括:
22.当检测到第一资源的第二状态的引用计数为0。
23.所述查询到第一资源的第二状态正在被其它任务使用之后、所述阻塞第一任务之前,进一步包括:
24.判断第一资源的当前物理状态是否为第二状态;
25.若不为第二状态,则将第一资源的当前物理状态切换到第二状态。
26.所述阻塞第一任务,包括:
27.将第一资源的阻塞任务计数加1;
28.且,所述释放对申请第一资源的所有状态的所有任务的阻塞,包括:
29.将第一资源的阻塞任务计数清零。
30.所述将第一资源的阻塞任务计数加1的同时,进一步包括:
31.将第一资源的状态切换信号值减1;
32.所述将第一资源的阻塞任务计数清零的同时,进一步包括:
33.将第一资源的状态切换信号值恢复为初始值1。
34.所述释放对申请第一资源的所有状态的所有任务的阻塞之后,进一步包括:
35.a、判断第一资源的当前物理状态是否为第一状态,若是,执行步骤b;若否,则将第一资源的当前物理状态更改为第一状态,然后执行步骤b;
36.b、将第一状态的引用计数加1,判断第一状态的引用计数是否等于2,若是,则将第一资源的状态切换信号值减1,并将第一资源的阻塞任务计数加1,确定申请第一状态成功。
37.所述接收到申请第一资源的第一状态的第一任务之后,进一步包括:
38.若查询到第一资源的第一状态正在被其它任务使用,则确定直接获取到第一资源的第一状态。
39.所述查询到第一资源的第一状态正在被其它任务使用,包括:
40.查询到第一资源的当前物理状态为第一状态。
41.所述若查询到第一资源的第一状态正在被其它任务使用之后,进一步包括:
42.将第一状态的引用计数加1,判断第一状态的引用计数是否等于1,若是,则将第一资源的状态切换信号值减1,并将第一资源的阻塞任务计数加1。
43.所述第一资源为phy芯片;
44.且,所述第一状态为电口媒介,所述第二状态为光口媒介,或者,所述第一状态为光口媒介,所述第二状态为电口媒介。
45.本技术实施例在接收到申请第一资源的第一状态的第一任务时,若查询到第一资源的第二状态正在被任务使用,则阻塞第一任务,且,当检测到针对第一资源的第二状态的所有任务都执行完毕时,释放对申请第一资源的所有状态的所有任务的阻塞;其中,第一资源支持包括第一状态和第二状态在内的多种互斥的状态,从而提高了并发访问资源状态的效率。
附图说明
46.为了更清楚地说明本技术实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
47.图1为本技术一实施例提供的并发申请资源状态的方法流程图;
48.图2为本技术另一实施例提供的并发申请资源状态的方法流程图;
49.图3为本技术又一实施例提供的并发申请phy芯片的媒介的方法流程图;
50.图4为本技术实施例提供的释放phy芯片的媒介的方法流程图;
51.图5为本技术实施例提供的一种电子设备的示例性结构示意图。
具体实施方式
52.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
53.本技术的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本技术的实施例例如能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含。例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其他步骤或单元。
54.下面以具体实施例对本技术的技术方案进行详细说明。下面几个具体实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例不再赘述。
55.图1为本技术一实施例提供的并发申请资源状态的方法流程图,其具体步骤如下:
56.步骤101:接收到申请第一资源的第一状态的第一任务。
57.步骤102:若查询到第一资源的第二状态正在被其它任务使用。
58.步骤103:阻塞第一任务,且,当检测到针对第一资源的第二状态的所有任务都执行完毕时,释放对申请第一资源的所有状态的所有任务的阻塞;其中,第一资源支持包括第一状态和第二状态在内的互斥的多种状态。
59.一可选实施例中,步骤102中,查询到第一资源的第二状态正在被其它任务使用,包括:判断第一资源的第二状态的引用计数是否为0,若不为0,则确定第一资源的第二状态正在被其它任务使用;
60.步骤103中,当检测到针对第一资源的第二状态的所有任务都执行完毕,包括:当检测到第一资源的第二状态的引用计数为0。
61.一可选实施例中,步骤102之后、步骤103之前,进一步包括:判断第一资源的当前物理状态是否为第二状态;若不为第二状态,则将第一资源的当前物理状态切换到第二状态。
62.一可选实施例中,步骤103中,阻塞第一任务,包括:将第一资源的阻塞任务计数加1;
63.且,步骤103中,释放对申请第一资源的所有状态的所有任务的阻塞,包括:将第一资源的阻塞任务计数清零。
64.一可选实施例中,步骤103中,将第一资源的阻塞任务计数加1的同时,进一步包括:将第一资源的状态切换信号值减1;
65.且,步骤103中,将第一资源的阻塞任务计数清零的同时,进一步包括:将第一资源的状态切换信号值恢复为初始值1。
66.一可选实施例中,步骤103中,释放对申请第一资源的所有状态的所有任务的阻塞之后,进一步包括:
67.a、判断第一资源的当前物理状态是否为第一状态,若是,执行步骤b;若否,则将第一资源的当前物理状态更改为第一状态,然后执行步骤b;
68.b、将第一状态的引用计数加1,判断第一状态的引用计数是否等于2,若是,则将第一资源的状态切换信号值减1,并将第一资源的阻塞任务计数加1,确定申请第一状态成功。
69.一可选实施例中,步骤101中,接收到申请第一资源的第一状态的第一任务之后,进一步包括:若查询到第一资源的第一状态正在被其它任务使用,则确定直接获取到第一资源的第一状态。
70.一可选实施例中,查询到第一资源的第一状态正在被其它任务使用,包括:查询到第一资源的当前物理状态为第一状态。
71.一可选实施例中,若查询到第一资源的第一状态正在被其它任务使用之后,进一步包括:将第一状态的引用计数加1,判断第一状态的引用计数是否等于1,若是,则将第一资源的状态切换信号值减1,并将第一资源的阻塞任务计数加1。
72.一可选实施例中,第一资源为phy芯片;且,第一状态为电口媒介,第二状态为光口媒介,或者,第一状态为光口媒介,第二状态为电口媒介。
73.图2为本技术另一实施例提供的并发申请资源状态的方法流程图,其具体步骤如下:
74.步骤201:接收到申请第一资源的第一状态的第一任务,将第一任务放入针对第一状态的任务队列中。
75.第一任务指的是针对第一资源的第一状态的寄存器的读任务或写任务。
76.步骤202:查询到第一资源的第二状态的引用计数不为0,则确定第一资源的第二状态正在被其它任务使用。
77.步骤203:判断第一资源的当前物理状态是否为第二状态,若是,执行步骤205;否则,执行步骤204。
78.步骤204:将第一资源的当前物理状态切换到第二状态。
79.步骤205:将第一资源的阻塞任务计数加1,并将第一资源的状态切换信号值减1。
80.步骤206:当检测到第一资源的第二状态的引用计数为0时,将第一资源的阻塞任务计数清零,并将第一资源的状态切换信号值恢复为初始值1。
81.第一资源的第二状态的引用计数为0说明针对第一资源的第二状态的所有任务都已执行完毕。
82.步骤207:判断第一资源的当前物理状态是否为第一状态,若是,执行步骤209;若否,执行步骤208。
83.步骤208:将第一资源的当前物理状态更改为第一状态。
84.步骤209:将第一状态的引用计数加1。
85.步骤210:判断第一状态的引用计数是否等于1,若是,执行步骤211;否则,执行步骤212。
86.步骤211:将第一资源的状态切换信号值减1,并将第一资源的阻塞任务计数加1。
87.第一状态的引用计数的初始值为0,因此,若第一状态的引用计数等于1,说明步骤201中接收到的第一任务为针对第一状态的第一个任务。
88.步骤212:从针对第一状态的任务队列中依次取出任务,执行针对第一状态的操作。
89.上述实施例实现了一个资源的多种状态的并发申请保护及其自动切换,大大提高了并发访问资源状态的效率和吞吐量,且,实现复杂度并没有增加,保护逻辑全部隐藏,封装性极佳。通过:1个初始值为1的状态切换信号作状态锁,每个状态的引用计数分别作为1个原子锁,以及1个阻塞任务计数统计任务锁定数目,这3个基本元素组合,就可以实现一个多态锁。
90.步骤201-213的执行主体可为控制模块。
91.支持combo(光电复用)口的phy芯片,可以工作于电口和光口两种媒介,但是,同一时刻只能工作于一种媒介。
92.一个phy芯片2种媒介的状态保护,至少需要满足如下三点需求:
93.一、phy芯片的电口或光口媒介状态需要申请,才能获得。如果phy芯片的当前物理媒介状态(电口或光口)正好与申请的媒介(电口或光口)相符,则可立即获得此状态;如果不符,则需等待到当前媒介释放为止。
94.二、释放当前媒介(电口或光口)时,只有当前媒介的引用计数为0,才允许切换媒介状态,唤醒申请该媒介的等待的任务队列。
95.三、如果phy芯片由于重启等原因自动切换了物理媒介状态,则需要立刻恢复其物理媒介状态为当前正在引用的软件媒介状态。
96.很明显,上述三点需求,是单一基础锁或读写锁无法满足的。而本技术提供的多态锁则可满足该phy芯片所需的状态保护的并发访问和切换需求。
97.以下以第一资源为phy芯片为例,对本技术进行详细说明:
98.图3为本技术又一实施例提供的并发申请phy芯片的媒介的方法流程图,本实施例以申请phy芯片的电口媒介为例,其具体步骤如下:
99.步骤300:初始化phy芯片的电口媒介的引用计数为0,初始化phy芯片的光口媒介的引用计数为0,初始化phy芯片的媒介状态切换信号值为1,初始化phy芯片的阻塞任务计数为0。
100.步骤301:接收申请phy芯片的电口媒介的第一任务,将第一任务放入针对电口媒介的任务队列中。
101.步骤302:判断该phy芯片的光口媒介的引用计数是否为0,若是,执行步骤307;否则,执行步骤303。
rom)、光存储器件、磁存储器件,或者上述的任意合适的组合,但不用于限制本技术保护的范围。在本技术公开的实施例中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
121.如图5所示,本技术实施例还提供一种电子设备。如图5所示,其示出了本技术实施例所涉及的电子设备的结构示意图,具体来讲:
122.该电子设备可以包括一个或一个以上处理核心的处理器51、一个或一个以上计算机可读存储介质的存储器52以及存储在存储器上并可在处理器上运行的计算机程序。在执行所述存储器52的程序时,可以实现上述并发申请资源状态的方法。
123.具体的,实际应用中,该电子设备还可以包括电源53、输入输出单元54等部件。本领域技术人员可以理解,图5中示出的电子设备的结构并不构成对该电子设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。其中:
124.处理器51是该电子设备的控制中心,利用各种接口和线路连接整个电子设备的各个部分,通过运行或执行存储在存储器52内的软件程序和/或模块,以及调用存储在存储器52内的数据,执行服务器的各种功能和处理数据,从而对该电子设备进行整体监控。
125.存储器52可用于存储软件程序以及模块,即上述计算机可读存储介质。处理器51通过运行存储在存储器52的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器52可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序等;存储数据区可存储根据服务器的使用所创建的数据等。此外,存储器52可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器52还可以包括存储器控制器,以提供处理器51对存储器52的访问。
126.该电子设备还包括给各个部件供电的电源53,可以通过电源管理系统与处理器51逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。电源53还可以包括一个或一个以上的直流或交流电源、再充电系统、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。
127.该电子设备还可包括输入输出单元54,该输入单元输出54可用于接收输入的数字或字符信息,以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。该输入单元输出54还可以用于显示由用户输入的信息或提供给用户的信息以及各种图像用户接口,这些图形用户接口可以由图形、文本、图标、视频和其任意组合来构成。
128.在本技术又一个实施例中还提供了一种计算机程序产品,包括计算机程序或指令,该计算机程序或指令被处理器执行时实现如前述实施例所述的并发申请资源状态的方法的步骤。
129.本技术附图中的流程图和框图,示出了按照本技术公开的各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或者代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应该注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同附图中所标准的顺序发生。例如,两个连接地表示的方框实际上可以基本并行地执行,它们有时也可以按照相反的顺序执行,这依所涉及
的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或者流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
130.本领域技术人员可以理解,本公开的各个实施例和/或权利要求中记载的特征可以进行多种组合和/或结合,即使这样的组合或结合没有明确记载于本技术中。特别地,在不脱离本技术精神和教导的情况下,本技术的各个实施例和/或权利要求中记载的特征可以进行多种组合和/或结合,所有这些组合和/或结合均落入本技术公开的范围。
131.本文中应用了具体实施例对本技术的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本技术的方法及其核心思路,并不用于限制本技术。对于本领域的技术人员来说,可以依据本技术的思路、精神和原则,在具体实施方式及应用范围上进行改变,其所做的任何修改、等同替换、改进等,均应包含在本技术保护的范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1