并发申请资源状态的方法技术

技术编号:33305451 阅读:10 留言:0更新日期:2022-05-06 12:14
本申请实施例提出并发申请资源状态的方法。方法包括:接收到申请第一资源的第一状态的第一任务;查询到第一资源的第二状态正在被其它任务使用;阻塞第一任务,且,当检测到针对第一资源的第二状态的所有任务都执行完毕时,释放对申请第一资源的所有状态的所有任务的阻塞;其中,第一资源支持包括第一状态和第二状态在内的互斥的多种状态。本申请实施例提高了并发访问资源状态的效率。了并发访问资源状态的效率。了并发访问资源状态的效率。

【技术实现步骤摘要】
并发申请资源状态的方法


[0001]本申请实施例涉及数据通信
,尤其涉及并发申请资源状态的方法。

技术介绍

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

技术实现思路

[0012]本申请实施例提出并发申请资源状态的方法及可读存储介质和电子设备,以提高并发访问资源状态的效率。
[0013]本申请实施例的技术方案是这样实现的:
[0014]一种并发申请资源状态的方法,该方法包括:
[0015]接收到申请第一资源的第一状态的第一任务;
[0016]若查询到第一资源的第二状态正在被其它任务使用;
[0017]阻塞第一任务,且,当检测到针对第一资源的第二状态的所有任务都执行完毕时,释放对申请第一资源的所有状态的所有任务的阻塞;
[0018]其中,第一资源包括第一状态和第二状态在内的互斥的多种状态。
[0019]所述查询到第一资源的第二状态正在被其它任务使用,包括:
[0020]判断第一资源的第二状态的引用计数是否为0,若不为0,则确定第一资源的第二状态正在被其它任务使用;
[0021]所述当检测到针对第一资源的第二状态的所有任务都执行完毕,包括:
[0022]当检测到第一资源的第二状态的引用计数为0。
[0023]所述查询到第一资源的第二状态正在被其它任务使用之后、所述阻塞第一任务之前,进一步包括:
[0024]判断第一资源的当前物理状态是否为第二状态;
[0025]若不为第二状态,则将第一资源的当前物理状态切换到第二状态。
[0026]所述阻塞第一任务,包括:
[0027]将第一资源的阻塞任务计数加1;
[0028]且,所述释放对申请第一资源的所有状态的所有任务的阻塞,包括:
[0029]将第一资源的阻塞任务计数清零。
[0030]所述将第一资源的阻塞任务计数加1的同时,进一步包括:
[0031]将第一资源的状态切换信号值减1;
[0032]所述将第一资源的阻塞任务计数清零的同时,进一步包括:
[0033]将第一资源的状态切换信号值恢复为初始值1。
[0034]所述释放对申请第一资源的所有状态的所有任务的阻塞之后,进一步包括:
[0035]A、判断第一资源的当前物理状态是否为第一状态,若是,执行步骤B;若否,则将第一资源的当前物理状态更改为第一状态,然后执行步骤B;
[0036]B、将第一状态的引用计数加1,判断第一状态的引用计数是否等于2,若是,则将第一资源的状态切换信号值减1,并将第一资源的阻塞任务计数加1,确定申请第一状态成功。
[0037]所述接收到申请第一资源的第一状态的第一任务之后,进一步包括:
[0038]若查询到第一资源的第一状态正在被其它任务使用,则确定直接获取到第一资源的第一状态。
[0039]所述查询到第一资源的第一状态正在被其它任务使用,包括:
[0040]查询到第一资源的当前物理状态为第一状态。
[0041]所述若查询到第一资源的第一状态正在被其它任务使用之后,进一步包括:
[0042]将第一状态的引用计数加1,判断第一状态的引用计数是否等于1,若是,则将第一资源的状态切换信号值减1,并将第一资源的阻塞任务计数加1。
[0043]所述第一资源为PHY芯片;
[0044]且,所述第一状态为电口媒介,所述第二状态为光口媒介,或者,所述第一状态为光口媒介,所述第二状态为电口媒介。
[0045]本申请实施例在接收到申请第一资源的第一状态的第一任务时,若查询到第一资源的第二状态正在被任务使用,则阻塞第一任务,且,当检测到针对第一资源的第二状态的所有任务都执行完毕时,释放对申请第一资源的所有状态的所有任务的阻塞;其中,第一资源支持包括第一状态和第二状态在内的多种互斥的状态,从而提高了并发访问资源状态的效率。
附图说明
[0046]为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
[0047]图1为本申请一实施例提供的并发申请资源状态的方法流程图;
[0048]图2为本申请另一实施例提供的并发申请资源状态的方法流程图;
[0049]图3为本申请又一实施例提供的并发申请PHY芯片的媒介的方法流程图;
[0050]图4为本申请实施例提供的释放PHY芯片的媒介的方法流程图;
[0051]图5为本申请实施例提供的一种电子设备的示例性结构示意图。
具体实施方式
[0052]下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
[0053]本申请的说明书和权利本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种并发申请资源状态的方法,其特征在于,该方法包括:接收到申请第一资源的第一状态的第一任务;若查询到第一资源的第二状态正在被其它任务使用;阻塞第一任务,且,当检测到针对第一资源的第二状态的所有任务都执行完毕时,释放对申请第一资源的所有状态的所有任务的阻塞;其中,第一资源包括第一状态和第二状态在内的互斥的多种状态。2.根据权利要求1所述的方法,其特征在于,所述查询到第一资源的第二状态正在被其它任务使用,包括:判断第一资源的第二状态的引用计数是否为0,若不为0,则确定第一资源的第二状态正在被其它任务使用;所述当检测到针对第一资源的第二状态的所有任务都执行完毕,包括:当检测到第一资源的第二状态的引用计数为0。3.根据权利要求1所述的方法,其特征在于,所述查询到第一资源的第二状态正在被其它任务使用之后、所述阻塞第一任务之前,进一步包括:判断第一资源的当前物理状态是否为第二状态;若不为第二状态,则将第一资源的当前物理状态切换到第二状态。4.根据权利要求1所述的方法,其特征在于,所述阻塞第一任务,包括:将第一资源的阻塞任务计数加1;且,所述释放对申请第一资源的所有状态的所有任务的阻塞,包括:将第一资源的阻塞任务计数清零。5.根据权利要求4所述的方法,其特征在于,所述将第一资源的阻塞任务计数加1的同时,进一步包括:将第一资源的状态切换信号值减1;所述将第一资源的阻塞任务计数清零的同时,进一步包括:将...

【专利技术属性】
技术研发人员:李伟宋卿吴孟圆
申请(专利权)人:北京格林伟迪科技股份有限公司北京格林伟迪通信技术有限公司
类型:发明
国别省市:

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

1