一种并行任务数据交换方法、装置、电子设备及存储介质制造方法及图纸

技术编号:32225787 阅读:20 留言:0更新日期:2022-02-09 17:30
本申请公开了一种并行任务数据交换方法、装置、电子设备及计算机可读存储介质,该方法包括:若检测到需要写入数据,则利用写入任务将第一数据写入第一内存空间;第一内存空间具有写入索引值;若第一数据写入完毕,则对第一内存空间和第二内存空间进行加锁的索引值交换处理,并激活更新标识;第二内存空间具有中转索引值;若检测到需要读出数据,则判断更新标识是否被激活;若更新标识被激活,则对第二内存空间和第三内存空间进行加锁的索引值交换处理;第三内存空间具有读出索引值;利用读出任务从第三内存空间中读出第二数据,并将更新标识设置为非激活状态;对任务的读写操作不会造成阻塞,实时性较好。实时性较好。实时性较好。

【技术实现步骤摘要】
一种并行任务数据交换方法、装置、电子设备及存储介质


[0001]本申请涉及多任务
,特别涉及一种并行任务数据交换方法、并行任务数据交换装置、电子设备及计算机可读存储介质。

技术介绍

[0002]在计算机的任务并行执行系统中,任务自身是一个独立的单元,在具体执行业务逻辑过程中,任务间有时需要交换一些数据来保证业务功能的有效实现,此时,对于数据所在的内存空间,并行的任务均具有读写操作权限;为保证任务对此内存空间的读写操作获取到正确的数据,就需要一定的权限或方法来保证同一时刻仅有一个任务对此内存可以操作。
[0003]三个并行任务的执行时序如图1所示。在时间轴向上,交替使用处理器资源来执行任务逻辑指令。如此,即引发一个问题,在task1任务运行时,需要将采集到的数据放入共享内存空间,但当任务运行被打断(或叫抢占)后,数据写入内存的操作也可能坐被打断,此时task2开始执行,而此时数据尚未完整写入共享内存空间,若此时task2直接访问共享内存空间,则会读取到一部分错误数据;从而计算结果更无从保证。
[0004]为了解决上述问题,相关技术借助于操作系统提供的一些机制功能,如信号量、互斥锁等方法,在task1未完成数据完整存入共享内存空间时,对此空间的读写操作权限上锁,待其它任务获得处理器资源来执行时,先读取锁的状态,若权限允许读写,才进行内存的读写访问,否则加入等待队列来等待task1释放锁的权限,并依次或依优先机制来运行,从而获取共享内存空间的读写访问。然而,相关技术采用锁的方式容易导致死锁问题,且任务需要加入等待队列,执行实时性较差。
[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]可见,该方法在将第一数据写入第一内存空间后,将第一内存空间和第二内存空间进行加锁的索引值交换处理,并激活更新标识。在交换之前,第一内存空间具有写入索引值,第二内存空间具有中转索引值,在交换之后,原本的第一内存空间具有中转索引值,转换为新的第二内存空间。相应的,原本的第二内存空间具有写入索引值,转换为新的第一内存空间。在想要读出数据时,首先判断更新标识是否被激活,若激活,则对第二内存空间和第三内存空间进行加锁的索引值交换处理。这样交换过后,原本的第二内存空间具有读出索引值,转换为新的第三内存空间,原本的第三内存空间具有中转索引值,转换为新的第二内存空间。在转换完成后,读出任务从第三内存空间中读出第二数据,并将更新标识设置为非激活状态。按照上述过程,被写入的输入可以从第一内存空间转移至第二内存空间,进一步转移至第三内存空间,进本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种并行任务数据交换方法,其特征在于,包括:若检测到需要写入数据,则利用写入任务将第一数据写入第一内存空间;所述第一内存空间具有写入索引值;若所述第一数据写入完毕,则对所述第一内存空间和第二内存空间进行加锁的索引值交换处理,并激活更新标识;所述第二内存空间具有中转索引值;若检测到需要读出数据,则判断所述更新标识是否被激活;若所述更新标识被激活,则对所述第二内存空间和所述第三内存空间进行加锁的索引值交换处理;所述第三内存空间具有读出索引值;利用读出任务从所述第三内存空间中读出第二数据,并将所述更新标识设置为非激活状态。2.根据权利要求1所述的并行任务数据交换方法,其特征在于,若所述更新标识未被激活,包括:利用所述读出任务从所述第三内存空间中读出所述第二数据。3.根据权利要求2所述的并行任务数据交换方法,其特征在于,所述利用读出任务从所述第三内存空间中读出第二数据,包括:判断所述第二数据是否为历史待读出数据;若为所述历史待读出数据,则基于所述第三内存空间的历史读出位置,将所述第二数据读出。4.根据权利要求1所述的并行任务数据交换方法,其特征在于,所述利用写入任务将第一数据写入第一内存空间,包括:判断所述第一数据是否为历史待写入数据;若为所述历史待写入数据,则基于所述第一内存空间的历史写入位置,将所述第一数据写入所述第一内存空间。5.根据权利要求1所述的并行任务数据交换方法,其特征在于,还包括:根据业务类型,分别设置数据读出对应的第一触发频率和数据写入的第二触发频率,以及所述第一触发频率和所述第二触发频率之间的大小关系。6.根据权利要求1...

【专利技术属性】
技术研发人员:陈爱昌宋琛刘奋民
申请(专利权)人:杭州和利时自动化有限公司
类型:发明
国别省市:

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

1