CN117931485B - 一种数据传输系统及方法、电子设备和存储介质 - Google Patents
一种数据传输系统及方法、电子设备和存储介质 Download PDFInfo
- Publication number
- CN117931485B CN117931485B CN202410338917.6A CN202410338917A CN117931485B CN 117931485 B CN117931485 B CN 117931485B CN 202410338917 A CN202410338917 A CN 202410338917A CN 117931485 B CN117931485 B CN 117931485B
- Authority
- CN
- China
- Prior art keywords
- data
- thread
- out queue
- request detection
- request
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 241
- 230000005540 biological transmission Effects 0.000 title claims abstract description 38
- 238000001514 detection method Methods 0.000 claims abstract description 260
- 230000008569 process Effects 0.000 claims abstract description 174
- 238000004891 communication Methods 0.000 claims abstract description 39
- 238000012545 processing Methods 0.000 claims abstract description 38
- 238000004590 computer program Methods 0.000 claims description 13
- 230000004044 response Effects 0.000 claims description 7
- 238000013461 design Methods 0.000 claims description 6
- 238000010586 diagram Methods 0.000 description 14
- 238000004088 simulation Methods 0.000 description 12
- 230000006870 function Effects 0.000 description 11
- 230000008901 benefit Effects 0.000 description 4
- 230000010365 information processing Effects 0.000 description 4
- 238000003491 array Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000001902 propagating effect Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000001960 triggered effect Effects 0.000 description 2
- RYGMFSIKBFXOCR-UHFFFAOYSA-N Copper Chemical compound [Cu] RYGMFSIKBFXOCR-UHFFFAOYSA-N 0.000 description 1
- 238000013475 authorization Methods 0.000 description 1
- 229910052802 copper Inorganic materials 0.000 description 1
- 239000010949 copper Substances 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Multi Processors (AREA)
Abstract
本公开涉及数据传输领域,公开了一种数据传输系统及方法、电子设备和存储介质,所述系统包括第一进程和第二进程,第一进程包含至少一个第一请求检测线程以及至少一个第一先进先出队列,第二进程包含至少一个第二请求检测线程以及至少一个第二先进先出队列,其中:第一进程中的数据写入线程将数据写入第一先进先出队列;第一请求检测线程,通过进程间通信的方式,将第一先进先出队列中的数据发送给第二请求检测线程;第二请求检测线程,在接收到数据的情况下,将数据写入第二先进先出队列中;第二进程中的数据读取线程从第二先进先出队列中读取数据。本公开实施例可提高基于SystemC语言实现的系统的数据处理效率。
Description
技术领域
本公开涉及计算机技术领域,尤其涉及一种数据传输系统及方法、电子设备和存储介质。
背景技术
现有技术中,针对芯片电路系统的主流建模方法是基于SystemC标准进行模型开发,并在此基础上评估模型的功能和性能。然而,由于SystemC引擎是单线程的实现,因此,在基于虚拟平台和硬件加速器的联合仿真中无法实现数据并发传输,从而极大降低了数据传输速率。SystemC的单线程实现,也限制了SystemC仿真程序必须运行在一台物理机器上,无法充分利用现有大规模计算集群的优势。
发明内容
本公开提出了一种数据传输技术方案。
根据本公开的一方面,提供了一种数据传输系统,所述系统基于硬件协同设计语言SystemC实现,所述系统包括第一进程和第二进程,所述第一进程包含至少一个第一请求检测线程以及至少一个第一先进先出队列,所述第二进程包含至少一个第二请求检测线程以及至少一个第二先进先出队列,其中:所述第一进程中的数据写入线程将数据写入所述第一先进先出队列;所述第一请求检测线程,通过进程间通信的方式,将所述第一先进先出队列中的数据发送给所述第二请求检测线程;所述第二请求检测线程,在接收到所述数据的情况下,将所述数据写入所述第二先进先出队列中;所述第二进程中的数据读取线程从所述第二先进先出队列中读取所述数据。
在一种可能的实现方式中,所述第一进程中的第一请求检测线程在启动后,响应于第一先进先出队列的注册请求,确定本地注册的第一先进先出队列的标识;所述第一请求检测线程,确定所述第一先进先出队列和第二先进先出队列之间的队列关联关系;所述第一请求检测线程,通过进程间通信的方式,将第一请求检测线程标识和所述第一先进先出队列的标识发送给第二请求检测线程,并接收所述第二请求检测线程发送的第二请求检测线程标识和第二先进先出队列的标识;所述第一请求检测线程基于第一先进先出队列的标识、第二先进先出队列的标识和所述关联关系,建立所述第一请求检测线程、第一先进先出队列、第二请求检测线程和第二先进先出队列之间的绑定关系,并对所述绑定关系进行保存。
在一种可能的实现方式中,所述第一进程中的数据读取线程检测所述第一先进先出队列中是否存在数据;在所述第一先进先出队列中存在第一数据的情况下,所述第一进程中数据读取线程读取所述第一数据,并通过所述第一请求检测线程和第二请求检测线程同步读事件,所述读事件用于使所述第一先进先出队列和所述第二先进先出队列的状态一致。
在一种可能的实现方式中,在所述第一先进先出队列中存在第一数据的情况下,所述第一进程中的数据读取线程读取所述第一数据,将第一数据从第一先进先出队列中弹出,并向所述第一请求检测线程发送读请求;所述第一请求检测线程响应于所述读请求,确定与所述第一先进先出队列对应的第二请求检测线程和第二先进先出队列,生成数据同步请求向所述第二请求检测线程发送;所述第二请求检测线程响应于接收到所述数据同步请求,确定与所述数据同步请求对应的第二先进先出队列,将所述第二先进先出队列中与所述数据同步请求对应的第一数据弹出,以使得所述第一先进先出队列和所述第二先进先出队列的状态一致。
在一种可能的实现方式中,在所述第一先进先出队列中不存在第一数据的情况下,所述数据读取线程等待写事件;或,在所述第一先进先出队列中不存在第一数据的情况下,所述数据读取线程确定读取失败,执行其它处理任务。
在一种可能的实现方式中,所述第一进程中的数据写入线程检测所述第一先进先出队列中是否存在可用空间;在所述第一先进先出队列中存在可用空间的情况下,所述第一进程中的数据写入线程写入第二数据,并通过所述第一请求检测线程和第二请求检测线程同步写事件,以使得所述第一先进先出队列和所述第二先进先出队列的状态一致。
在一种可能的实现方式中,在所述第一先进先出队列中存在可用空间的情况下,所述第一进程中的数据写入线程写入第二数据,并向所述第一请求检测线程发送写请求;所述第一请求检测线程响应于所述写请求,确定与所述第一先进先出队列对应的第二请求检测线程和第二先进先出队列,生成数据同步请求向所述第二请求检测线程发送;所述第二请求检测线程响应于接收到数据同步请求,确定与数据同步请求对应的第二先进先出队列,将数据同步请求中的第二数据写入所述第二先进先出队列中,以使得所述第一先进先出队列和所述第二先进先出队列的状态一致。
在一种可能的实现方式中,在所述第一先进先出队列中不存在可用空间的情况下,所述数据写入线程等待读事件;或,在所述第一先进先出队列中不存在可用空间的情况下,所述数据写入线程确定写入失败,执行其它处理任务。
根据本公开的一方面,提供了一种数据传输方法,应用于第一进程,所述第一进程包括至少一个第一请求检测线程以及至少一个第一先进先出队列,所述方法包括:所述第一进程中的数据写入线程将数据写入所述第一先进先出队列;所述第一请求检测线程,通过进程间通信的方式,将所述第一先进先出队列中的数据发送给第二请求检测线程;所述第一请求检测线程,通过进程间通信的方式,接收第二进程中的第二请求检测线程发送的数据,将所述数据写入所述第一先进先出队列中;所述第一进程中的数据写入线程将所述数据写入所述第一先进先出队列。
在一种可能的实现方式中,所述第一进程中的第一请求检测线程在启动后,响应于第一先进先出队列的注册请求,确定本地注册的第一先进先出队列的标识;所述第一请求检测线程,确定所述第一先进先出队列和第二先进先出队列之间的队列关联关系;所述第一请求检测线程,通过进程间通信的方式,将第一请求检测线程标识和所述第一先进先出队列的标识发送给第二请求检测线程,并接收所述第二请求检测线程发送的第二请求检测线程标识和第二先进先出队列的标识;所述第一请求检测线程基于第一先进先出队列的标识、第二先进先出队列的标识和所述关联关系,建立所述第一请求检测线程、第一先进先出队列、第二请求检测线程和第二先进先出队列之间的绑定关系,并对所述绑定关系进行保存。
在一种可能的实现方式中,所述第一进程中的数据读取线程检测所述第一先进先出队列中是否存在数据;在所述第一先进先出队列中存在第一数据的情况下,所述第一进程中数据读取线程读取所述第一数据,并通过所述第一请求检测线程和第二请求检测线程同步读事件,所述读事件用于使所述第一先进先出队列和所述第二先进先出队列的状态一致。
在一种可能的实现方式中,在所述第一先进先出队列中存在第一数据的情况下,所述第一进程中的数据读取线程读取所述第一数据,将第一数据从第一先进先出队列中弹出,并向所述第一请求检测线程发送读请求;所述第一请求检测线程响应于所述读请求,确定与所述第一先进先出队列对应的第二请求检测线程和第二先进先出队列,生成数据同步请求向所述第二请求检测线程发送;所述第二请求检测线程响应于接收到所述数据同步请求,确定与所述数据同步请求对应的第二先进先出队列,将所述第二先进先出队列中与所述数据同步请求对应的第一数据弹出,以使得所述第一先进先出队列和所述第二先进先出队列的状态一致。
在一种可能的实现方式中,在所述第一先进先出队列中不存在第一数据的情况下,所述数据读取线程等待写事件;或,在所述第一先进先出队列中不存在第一数据的情况下,所述数据读取线程确定读取失败,执行其它处理任务。
在一种可能的实现方式中,所述第一进程中的数据写入线程检测所述第一先进先出队列中是否存在可用空间;在所述第一先进先出队列中存在可用空间的情况下,所述第一进程中的数据写入线程写入第二数据,并通过所述第一请求检测线程和第二请求检测线程同步写事件,以使得所述第一先进先出队列和所述第二先进先出队列的状态一致。
在一种可能的实现方式中,在所述第一先进先出队列中存在可用空间的情况下,所述第一进程中的数据写入线程写入第二数据,并向所述第一请求检测线程发送写请求;所述第一请求检测线程响应于所述写请求,确定与所述第一先进先出队列对应的第二请求检测线程和第二先进先出队列,生成数据同步请求向所述第二请求检测线程发送;所述第二请求检测线程响应于接收到数据同步请求,确定与数据同步请求对应的第二先进先出队列,将数据同步请求中的第二数据写入所述第二先进先出队列中,以使得所述第一先进先出队列和所述第二先进先出队列的状态一致。
在一种可能的实现方式中,在所述第一先进先出队列中不存在可用空间的情况下,所述数据写入线程等待读事件;或,在所述第一先进先出队列中不存在可用空间的情况下,所述数据写入线程确定写入失败,执行其它处理任务。
根据本公开的一方面,提供了一种电子设备,包括:处理器;用于存储处理器可执行指令的存储器;其中,所述处理器被配置为调用所述存储器存储的指令,以实现上述系统。
根据本公开的一方面,提供了一种计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令被处理器执行时实现上述系统。
在本公开实施例中,所述系统基于硬件协同设计语言SystemC实现,所述系统包括第一进程和第二进程,所述第一进程包含至少一个第一请求检测线程以及至少一个第一先进先出队列,所述第二进程包含至少一个第二请求检测线程以及至少一个第二先进先出队列,其中:所述第一进程中的数据写入线程将数据写入所述第一先进先出队列;所述第一请求检测线程,通过进程间通信的方式,将所述第一先进先出队列中的数据发送给所述第二请求检测线程;所述第二请求检测线程,在接收到所述数据的情况下,将所述数据写入所述第二先进先出队列中;所述第二进程中的数据读取线程从所述第二先进先出队列中读取所述数据。由此,第一进程中的数据写入线程在发送数据时,可以将数据写入本地的第一先进先出队列中,然后由第一请求检测线程通过线程间通信的方式,将第一先进先出队列中的数据发送给第二进程中的第二请求检测线程,第二请求检测线程将数据写入本地的第二队列中,以供第二进程中的数据读取线程读取,实现了SystemC进程的跨进程数据传输,便于在不同的物理机器上运行,充分利用大规模计算集群的优势,提高了基于SystemC语言实现的系统的数据处理效率。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,而非限制本公开。根据下面参考附图对示例性实施例的详细说明,本公开的其它特征及方面将变得清楚。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,这些附图示出了符合本公开的实施例,并与说明书一起用于说明本公开的技术方案。
图1示出根据本公开实施例的数据传输系统的框架图。
图2示出根据本公开实施例的数据读取过程的流程图。
图3示出根据本公开实施例的另一数据读取过程的流程图。
图4示出根据本公开实施例的远端数据同步过程的流程图。
图5示出根据本公开实施例的数据写入过程的流程图。
图6示出根据本公开实施例的另一数据写入过程的流程图。
图7示出根据本公开实施例的远端数据写入过程的流程图。
图8示出根据本公开实施例的一种数据传输方法的流程图。
图9示出根据本公开实施例的一种电子设备的框图。
具体实施方式
以下将参考附图详细说明本公开的各种示例性实施例、特征和方面。附图中相同的附图标记表示功能相同或相似的元件。尽管在附图中示出了实施例的各种方面,但是除非特别指出,不必按比例绘制附图。
在这里专用的词“示例性”意为“用作例子、实施例或说明性”。这里作为“示例性”所说明的任何实施例不必解释为优于或好于其它实施例。
本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中术语“至少一种”表示多种中的任意一种或多种中的至少两种的任意组合,例如,包括A、B、C中的至少一种,可以表示包括从A、B和C构成的集合中选择的任意一个或多个元素。
另外,为了更好地说明本公开,在下文的具体实施方式中给出了众多的具体细节。本领域技术人员应当理解,没有某些具体细节,本公开同样可以实施。在一些实例中,对于本领域技术人员熟知的方法、手段、元件和电路未作详细描述,以便于凸显本公开的主旨。
SystemC是用于建模和模拟复杂系统的高级编程语言,特别是在芯片和电路设计领域。由于SystemC引擎是单线程的实现,因此在基于虚拟平台和硬件加速器或FPGA的联合仿真中,无法实现数据并发传输,这会极大地降低数据传输速率。此外,SystemC的单线程实现也限制了其仿真程序必须在单一物理机器上运行,无法充分利用大规模计算集群的优势。
基于此,本公开提供了一种数据传输系统,所述系统基于硬件协同设计语言SystemC实现,所述系统包括第一进程和第二进程,所述第一进程包含至少一个第一请求检测线程以及至少一个第一先进先出队列,所述第二进程包含至少一个第二请求检测线程以及至少一个第二先进先出队列,其中:所述第一进程中的数据写入线程将数据写入所述第一先进先出队列;所述第一请求检测线程,通过进程间通信的方式,将所述第一先进先出队列中的数据发送给所述第二请求检测线程;所述第二请求检测线程,在接收到所述数据的情况下,将所述数据写入所述第二先进先出队列中;所述第二进程中的数据读取线程从所述第二先进先出队列中读取所述数据。由此,第一进程中的数据写入线程在发送数据时,可以将数据写入本地的第一先进先出队列中,然后由第一请求检测线程通过线程间通信的方式,将第一先进先出队列中的数据发送给第二进程中的第二请求检测线程,第二请求检测线程将数据写入本地的第二队列中,以供第二进程中的数据读取线程读取,实现了SystemC进程的跨进程数据传输,便于在不同的物理机器上运行,充分利用大规模计算集群的优势,提高了基于SystemC语言实现的系统的数据处理效率。
图1示出根据本公开实施例的数据传输系统的框架图,所述系统基于硬件协同设计语言SystemC实现,如图1所示,所述系统包括第一进程101和第二进程102,所述第一进程101包含至少一个第一请求检测线程以及至少一个第一先进先出队列,所述第二进程102包含至少一个第二请求检测线程以及至少一个第二先进先出队列,其中:
所述第一进程101中的数据写入线程将数据写入所述第一先进先出队列;
所述第一请求检测线程,通过进程间通信的方式,将所述第一先进先出队列中的数据发送给所述第二请求检测线程;
所述第二请求检测线程,在接收到所述数据的情况下,将所述数据写入所述第二先进先出队列中;
所述第二进程102中的数据读取线程从所述第二先进先出队列中读取所述数据。
第一进程101:包含一个或多个第一仿真线程,第一仿真线程用于执行SystemC语言实现的程序指令,进行仿真任务。第二进程102:包含一个或多个第二仿真线程,第二仿真线程同样用于执行SystemC语言实现的程序指令,进行仿真任务。除了第一仿真线程和第二仿真线程之间的通信,两个进程中的其它线程之间也可以基于数据队列构成的线程接口进行通信。
在本公开实施例中,第一进程和第二进程可以分布于不同的物理机中并行运行,从而提高了仿真的效率。
可以理解的是,本公开实施例中的“第一”和“第二”用于区分所描述的对象,而不应当理解为对描述对象的次序、指示或暗示相对重要性等其它限定。
第一先进先出队列和第二先进先出队列基于跨物理机的数据通信协议进行数据传输。在一个示例中,第一先进先出队列和第二先进先出队列基于传输控制协议/网间网协议(Transmission Control Protocol/Internet Protocol,TCP/IP)进行数据传输,TCP/IP是一种可靠的、面向连接的协议,它可以在不同的物理机之间建立连接,并进行数据交换;在另一个示例中,第一先进先出队列和第二先进先出队列基于远程过程调用协议(RemoteProcedure Call,RPC)进行数据传输,RPC协议可以在不同的物理机之间进行通信,实现远程调用和数据交换,RPC协议具有高效、灵活和可扩展的特点。
第一请求检测线程和第二请求检测线程为请求检测线程,能够对数据处理请求进行检测,数据写入线程将数据写入先进先出队列后,会发送数据处理请求至第一请求检测线程,以请求第一请求检测线程将第一先进先出队列中的数据发送给第二请求检测线程;第一请求检测线程向第二请求检测线程发送数据处理请求,请求第二请求检测线程将数据写入第二先进先出队列。
请求检测线程,可以是线程也可以是协程,在实际应用中,可以根据实际使用场景来选择使用线程或协程来处理请求。线程是操作系统分配的最小的执行单元,它可以同时执行多个任务。在一个示例中,可以使用线程来创建多个请求检测线程,每个线程负责监听和检测数据处理请求。协程是一种轻量级的用户态线程,它由用户自己控制和管理。相比于线程,协程的开销更小,可以创建更多的协程来处理任务。在另一个示例中,可以使用协程来实现请求检测线程,每个协程负责监听和检测数据处理请求。
需要说明的是,具体选择使用线程还是协程来实现请求检测,取决于具体的应用场景和需求,本公开对此不作限定。如果需要同时处理多个独立的请求(在进程中有多个先进先出队列的情况下),并且要求高并发性能,那么可以使用线程;如果需要处理一些轻量级的、串行的请求(在进程中有多个先进先出队列的情况下),并且要求更高的响应速度和资源利用率,那么可以使用协程。
本公开实施例提供的系统可以包含多个进程,每个进程都可以执行特定的任务。各进程间的通信方式可以与第一进程和第二进程之间的通信方式相同, 即,各进程中的数据写入线程可以将需要通信的数据添加到本地的先进先出队列中,然后本地的请求检测线程通过进程间通信的方式将数据发送给其它进程的数据接收线程,然后由数据接收线程将数据存储到本地的先进先出队列中。
需要说明的是,两个互相通信的先进先出队列之间会预先约定好绑定关系,即绑定两个进程中对应的先进先出队列,建立绑定关系的两个先进先出队列不与其它先进先出队列进行数据交换,以保证两个先进先出队列中数据的顺序性和一致性,同时也可以提高通信的效率。
下面,对本公开实施例提供的建立队列关联关系的过程进行详细描述。
在一种可能的实现方式中,所述第一进程中的第一请求检测线程在启动后,响应于第一先进先出队列的注册请求,确定本地注册的第一先进先出队列的标识;所述第一请求检测线程,确定所述第一先进先出队列和第二先进先出队列之间的队列关联关系;所述第一请求检测线程,通过进程间通信的方式,将第一请求检测线程标识和所述第一先进先出队列的标识发送给第二请求检测线程,并接收所述第二请求检测线程发送的第二请求检测线程标识和第二先进先出队列的标识;所述第一请求检测线程基于第一先进先出队列的标识、第二先进先出队列的标识和所述关联关系,建立所述第一请求检测线程、第一先进先出队列、第二请求检测线程和第二先进先出队列之间的绑定关系,并对所述绑定关系进行保存。
在本实现方式中,由于请求检测线程负责对先进先出队列中的数据进行同步,因此,会建立第一请求检测线程、第一先进先出队列、第二请求检测线程和第二先进先出队列之间的绑定关系。
绑定关系的建立是在系统启动阶段进行的,针对需要建立先进先出队列的SystemC仿真进程,在进程启动阶段会执行以下步骤:
1、初始化本地的请求检测线程。
初始化的过程是SystemC的启动的过程,该过程会启动进程并创建线程,并对内存等资源进行分配,每一个进程都会建立其本地的请求检测线程。针对第一进程而言,会初始化第一请求检测线程;针对第二进程而言,会初始化第二请求检测线程。
2、本地的请求检测线程建立进程间通信通路。
本地的请求检测线程可以与其它进程的请求检测线程建立通信通路,例如,使用TCP/IP协议建立不同物理机中请求检测线程之间的通信,基于预先配置的远端的TCP/IP的地址、端口号进行不同物理机的通信连接,基于不同物理机中进程的标识建立与远端物理机中进程的通信通路。
3、构成跨进程先进先出队列的本地进程中的本地先进先出队列将自己注册到本地的请求检测线程中。
在注册时,先进先出队列会将自己的标识(例如名字)注册进去。以便于后续远端的基于先进先出队列的标识进行匹配,并基于匹配后具备绑定关系的先进先出队列进行数据的传输。
示例性的,第一进程A中的第一先进先出队列F0将自己注册到A中的第一请求检测线程,第二先进先出队列F1和F2将自己注册到第二进程B本地的请求检测线程,第三先进先出队列F3将自己注册到第三进程C本地的请求检测线程。
4、本地的请求检测线程加载跨进程先进先出队列的配置。
进程先进先出队列的配置即为需要通信的两个先进先出队列之间的关联关系。接上例,配置可以是F0和F1组成一个跨进程先进先出队列,F2和F3组成一个跨进程先进先出队列。
5、所有进程中本地的请求检测线程,通过建立的跨进程通信通道,发送本地注册的先进先出队列标识至其它进程中的请求检测线程。
这里具体发送的信息包括:本进程的标识、本地所有注册的先进先出队列的名称以及本进程对此先进先出队列的读写访问状态。
6、所有的本地的请求检测线程获取与自己所管理的本地先进先出队列关联的其他进程信息。
示例性的,进程A获得进程B和C发送过来的先进先出队列的标识,确定进程B中包含队列F1和F2,进程C包含队列F3。进程A中本地的请求检测线程加载的配置为F0和F1组成A中的跨进程先进先出队列,因此,进程A中本地的请求检测线程保存绑定关系[(A, F0, R);(B, F1, W)],这表明一个跨进程先进先出队列由A中的本地先进先出队列F0和B中的本地先进先出队列F1组成,其中A中对F0是读(Read)访问,B对F1是写(Write)访问。绑定关系保存在每个进程本地的请求检测线程中。
7、每个进程中本地的请求检测线程检测所有注册的本地先进先出队列,检测是否有注册但未配对的本地先进先出队列,如果有,则表明系统中有未完全建立的跨进程先进先出队列,则打印出错信息并退出。
8、每个进程中本地的请求检测线程检测所有生成的跨进程先进先出队列的访问情况,如果出现两个进程对同一个跨进程先进先出队列都是读访问或者都是写访问,则打印出错信息并退出。
在本公开实施例中,在所述第一进程中的第一请求检测线程在启动后,响应于第一先进先出队列的注册请求,确定本地注册的第一先进先出队列的标识;所述第一请求检测线程,确定所述第一先进先出队列和第二先进先出队列之间的队列关联关系;所述第一请求检测线程,通过进程间通信的方式,将第一请求检测线程标识和所述第一先进先出队列的标识发送给第二请求检测线程,并接收所述第二请求检测线程发送的第二请求检测线程标识和第二先进先出队列的标识;由此,第一请求检测线程通过基于第一先进先出队列的标识、第二先进先出队列的标识和所述关联关系,建立了所述第一请求检测线程、第一先进先出队列、第二请求检测线程和第二先进先出队列之间的绑定关系,并对所述绑定关系进行保存,以便于后续能够基于该绑定关系进行精准的数据传输,以保证两个先进先出队列中数据的顺序性和一致性,同时也可以提高数据传输的效率。
在构建好绑定关系后,即可基于构建好的绑定关系进行通信,下面基于本公开提供的可能的实现方式,对数据通信系统进行示例性阐述。
在一种可能的实现方式中,所述第一进程中的数据读取线程检测所述第一先进先出队列中是否存在数据;在所述第一先进先出队列中存在第一数据的情况下,所述第一进程中数据读取线程读取所述第一数据,并通过所述第一请求检测线程和第二请求检测线程同步读事件,所述读事件用于使所述第一先进先出队列和所述第二先进先出队列的状态一致。
在读取线程读取第一先进先出队列中的数据后,会将该队列中的该数据弹出,此时,先进先出队列中的数据发生了变化,即产生了读事件,那么,可以向第一请求检测线程发送同步远端先进先出队列的请求。
而第一请求检测线程可以负责对本地所有的先进先出队列的请求进行检测,在检测到读事件后,与第二请求检测线程同步读事件,以使得所述第一先进先出队列和所述第二先进先出队列的状态一致。
在本公开实施例中,在第一先进先出队列中存在第一数据的情况下,第一进程中数据读取线程会读取第一数据,并通过第一请求检测线程和第二请求检测线程同步读事件,在完成了数据的跨进程读取操作的同时,保持了第一先进先出队列和所述第二先进先出队列中数据的顺序性和一致性,提高了数据传输的效率。
在一种可能的实现方式中,在所述第一先进先出队列中存在第一数据的情况下,所述第一进程中的数据读取线程读取所述第一数据,将第一数据从第一先进先出队列中弹出,并向所述第一请求检测线程发送读请求;所述第一请求检测线程响应于所述读请求,确定与所述第一先进先出队列对应的第二请求检测线程和第二先进先出队列,生成数据同步请求向所述第二请求检测线程发送;所述第二请求检测线程响应于接收到所述数据同步请求,确定与所述数据同步请求对应的第二先进先出队列,将所述第二先进先出队列中与所述数据同步请求对应的第一数据弹出,以使得所述第一先进先出队列和所述第二先进先出队列的状态一致。
在第一先进先出队列中的第一数据被读出后,第一请求检测线程接收到读请求,然后基于预先构建的绑定关系,确定与所述第一先进先出队列对应的第二请求检测线程和第二先进先出队列,生成数据同步请求向第二请求检测线程发送,数据同步请求中会包含被读取的第二先进先出队列的标识。
第二请求检测线程响应于接收到数据同步请求,根据数据同步请求中第二先进先出队列的标识,确定第二先进先出队列,并将第二先进先出队列中与所述数据同步请求对应的第一数据弹出,以使得所述第一先进先出队列和所述第二先进先出队列的状态一致。
在一种可能的实现方式中,在所述第一先进先出队列中不存在第一数据的情况下,所述数据读取线程等待写事件;或,在所述第一先进先出队列中不存在第一数据的情况下,所述数据读取线程确定读取失败,执行其它处理任务。
在一个示例中,当第一先进先出队列中的数据未准备好时,数据读取线程一直等待写事件发生,即等待有数据被写入第一先进先出队列中,在这个过程中,数据读取线程不去执行其它任务,而是一直等待写事件的发生,直到数据写入第一先进先出队列,以确保数据能够被及时的读取,保证数据的正确传递和处理。
在另一个示例中,当第一先进先出队列中的数据未准备好时,数据读取线程返回读取失败,并执行其它处理任务。即,当数据未准备好时,数据读取线程会立即返回,可以继续执行其他任务,避免了线程的空转等待,提高了程序的运行效率。
图2示出根据本公开实施例的数据读取过程的流程图。数据读取线程会检测本地FIFO是否有数据,当本地FIFO中的数据未准备好时,数据读取线程一直等待写事件发生;当本地FIFO中存在数据时,数据读取线程读取数据,并将数据从本地FIFO中弹出,然后发送读请求到本地的请求检测子线程,本地的请求检测子线程查询绑定的远端进程和FIFO,并发送数据同步请求到远端进程,请求远端进程同步对应FIFO中的数据。远端进程中的请求检测子线程响应于数据同步请求,将数据同步请求对应的数据从本地对应的FIFO中弹出,实现两端FIFO的一致。
图3示出根据本公开实施例的另一数据读取过程的流程图。数据读取线程会检测本地FIFO是否有数据,当本地FIFO中的数据未准备好时,数据读取线程返回失败并结束;当本地FIFO中存在数据时,数据读取线程读取数据,并将数据从本地FIFO中弹出,然后发送读请求到本地的请求检测子线程,本地的请求检测子线程查询绑定的远端进程和FIFO,并发送数据同步请求到远端进程,请求远端进程同步对应FIFO中的数据。远端进程中的请求检测子线程响应于数据同步请求,将数据同步请求对应的数据从本地对应的FIFO中弹出,实现两端FIFO的一致。
图4示出根据本公开实施例的远端数据同步过程的流程图。进程本地的请求检测线程检测是否有来自其它进程的请求检测线程发送的数据同步请求,在未检测到的情况下,继续等待数据同步请求的到来,在检测到的情况下,取出数据同步请求,获取数据同步请求中携带的FIFO名称,将数据同步请求转发到对应的本地FIFO,本地FIFO从存储中弹出数据,并触发读事件,以便基于读事件执行下一操作的线程可以执行后续操作。然后判断仿真是否结束,若未结束则继续检测是否有来自其它进程的请求检测线程发送的读请求,若仿真结束则结束流程。
在一种可能的实现方式中,所述第一进程中的数据写入线程检测所述第一先进先出队列中是否存在可用空间;在所述第一先进先出队列中存在可用空间的情况下,所述第一进程中的数据写入线程写入第二数据,并通过所述第一请求检测线程和第二请求检测线程同步写事件,以使得所述第一先进先出队列和所述第二先进先出队列的状态一致。
在向第一先进先出队列中写入数据时,会先判断队列中是否有可供写入数据的可用空间,如果没有可用空间,则等待读事件发生,即当有数据读出时,队列中便存在可供写入数据的空间。如果有可用空间,则数据写入线程写入第二数据,然后通过第一请求检测线程和第二请求检测线程同步写事件,以使得第一先进先出队列和第二先进先出队列的状态一致。
第一请求检测线程可以负责对本地所有的先进先出队列的请求进行检测,在检测到写事件后,与第二请求检测线程同步写事件,以使得所述第一先进先出队列和所述第二先进先出队列的状态一致。
在本公开实施例中,在第一先进先出队列中存在可用空间的情况下,第一进程中的数据写入线程写入第二数据,并通过第一请求检测线程和第二请求检测线程同步写事件,以使得第一先进先出队列和第二先进先出队列的状态一致,在完成了数据的跨进程写入操作的同时,保持了第一先进先出队列和所述第二先进先出队列中数据的顺序性和一致性,提高了数据传输的效率。
在一种可能的实现方式中,在所述第一先进先出队列中存在可用空间的情况下,所述第一进程中的数据写入线程写入第二数据,并向所述第一请求检测线程发送写请求;所述第一请求检测线程响应于所述写请求,确定与所述第一先进先出队列对应的第二请求检测线程和第二先进先出队列,生成数据同步请求向所述第二请求检测线程发送;所述第二请求检测线程响应于接收到数据同步请求,确定与数据同步请求对应的第二先进先出队列,将数据同步请求中的第二数据写入所述第二先进先出队列中,以使得所述第一先进先出队列和所述第二先进先出队列的状态一致。
在向第一先进先出队列中写入第二数据后,第一请求检测线程接收到写事件,然后基于预先构建的绑定关系,确定与所述第一先进先出队列对应的第二请求检测线程和第二先进先出队列,生成数据同步请求向第二请求检测线程发送,数据同步请求中会包含被写入的第二先进先出队列的标识。
第二请求检测线程响应于接收到数据同步请求,根据数据同步请求中第二先进先出队列的标识,确定第二先进先出队列,并将写事件中的第二数据写入所述第二先进先出队列中,以使得第一先进先出队列和第二先进先出队列的状态一致。
在一种可能的实现方式中,在所述第一先进先出队列中不存在可用空间的情况下,所述数据写入线程等待读事件;或,在所述第一先进先出队列中不存在可用空间的情况下,所述数据写入线程确定写入失败,执行其它处理任务。
在一个示例中,当第一先进先出队列中不存在可用空间的情况下,数据写入线程一直等待读事件发生,即等待有数据被从第一先进先出队列中读出,在这个过程中,数据写入线程不去执行其它任务,而是一直等待读事件的发生,直到数据从第一先进先出队列中读出,以确保数据能够被及时的写入,保证数据的正确传递和处理。
在另一个示例中,当第一先进先出队列中不存在可用空间的情况下,数据写入线程返回写入失败,并执行其它处理任务。即,当不存在可用空间时,数据写入线程会立即返回,可以继续执行其他任务,避免了线程的空转等待,提高了程序的运行效率。
图5示出根据本公开实施例的数据写入过程的流程图。数据写入线程会检测本地FIFO是否有空间,当本地FIFO中没有空间时,数据写入线程一直等待读事件发生;当本地FIFO中有空间时,数据写入线程写入数据,然后发送写请求到本地的请求检测子线程,本地的请求检测子线程查询绑定的远端进程和FIFO,并发送数据同步请求到远端进程,携带FIFO名称和待写入数据,请求同步远端对应FIFO中的数据。远端进程中的请求检测子线程响应于数据同步请求,将数据同步请求对应的数据写入对应的FIFO中,实现两端FIFO的一致。
图6示出根据本公开实施例的另一数据写入过程的流程图。数据写入线程会检测本地FIFO是否有空间,当本地FIFO中没有空间时,数据写入线程返回失败并结束;当本地FIFO中有空间时,数据写入线程写入数据,然后发送写请求到本地的请求检测子线程,本地的请求检测子线程查询绑定的远端进程和FIFO,并发送数据同步请求到远端进程,携带FIFO名称和待写入数据,请求同步远端对应FIFO中的数据。远端进程中的请求检测子线程响应于数据同步请求,将数据同步请求对应的数据写入对应的FIFO中,实现两端FIFO的一致。
图7示出根据本公开实施例的远端数据写入过程的流程图。进程本地的请求检测线程检测是否有来自其它进程的请求检测线程发送的数据同步请求,在未检测到的情况下,继续等待数据同步请求的到来,在检测到的情况下,取出数据同步请求,获取数据同步请求中携带的FIFO名称以及待写入数据,将数据同步请求转发到对应的本地FIFO,本地FIFO将待写入数据写入对应的本地FIFO,并触发写读事件,以便基于写事件执行下一操作的线程可以执行后续操作。然后判断仿真是否结束,若未结束则继续检测是否有来自其它进程的请求检测线程发送的读请求,若仿真结束则结束流程。
本公开还提供了一种数据传输方法,应用于第一进程,所述第一进程包括至少一个第一请求检测线程以及至少一个第一先进先出队列,所述方法包括:
所述第一进程中的数据写入线程将数据写入所述第一先进先出队列;
所述第一请求检测线程,通过进程间通信的方式,将所述第一先进先出队列中的数据发送给第二请求检测线程;
所述第一请求检测线程,通过进程间通信的方式,接收第二进程中的第二请求检测线程发送的数据,将所述数据写入所述第一先进先出队列中。
可以理解,本公开提及的上述各个方法实施例,在不违背原理逻辑的情况下,均可以彼此相互结合形成结合后的实施例,限于篇幅,本公开不再赘述。本领域技术人员可以理解,在具体实施方式的上述方法中,各步骤的具体执行顺序应当以其功能和可能的内在逻辑确定。
此外,本公开还提供了一种数据传输方法、电子设备、计算机可读存储介质、程序,上述均可用来实现本公开提供的任一种数据传输系统,相应技术方案和描述和参见方法部分的相应记载,不再赘述。
图8示出根据本公开实施例的一种数据传输方法的流程图,所述方法应用于第一进程,所述第一进程包括至少一个第一请求检测线程以及至少一个第一先进先出队列,如图8所示,所述方法包括:
在步骤S41中,所述第一进程中的数据写入线程将数据写入所述第一先进先出队列;
在步骤S42中,所述第一请求检测线程,通过进程间通信的方式,将所述第一先进先出队列中的数据发送给第二请求检测线程;
在步骤S43中,所述第一请求检测线程,通过进程间通信的方式,接收第二进程中的第二请求检测线程发送的数据,将所述数据写入所述第一先进先出队列中;
在步骤S44中,所述第一进程中的数据写入线程将所述数据写入所述第一先进先出队列。
在一种可能的实现方式中,所述第一进程中的第一请求检测线程在启动后,响应于第一先进先出队列的注册请求,确定本地注册的第一先进先出队列的标识;所述第一请求检测线程,确定所述第一先进先出队列和第二先进先出队列之间的队列关联关系;所述第一请求检测线程,通过进程间通信的方式,将第一请求检测线程标识和所述第一先进先出队列的标识发送给第二请求检测线程,并接收所述第二请求检测线程发送的第二请求检测线程标识和第二先进先出队列的标识;所述第一请求检测线程基于第一先进先出队列的标识、第二先进先出队列的标识和所述关联关系,建立所述第一请求检测线程、第一先进先出队列、第二请求检测线程和第二先进先出队列之间的绑定关系,并对所述绑定关系进行保存。
在一种可能的实现方式中,所述第一进程中的数据读取线程检测所述第一先进先出队列中是否存在数据;在所述第一先进先出队列中存在第一数据的情况下,所述第一进程中数据读取线程读取所述第一数据,并通过所述第一请求检测线程和第二请求检测线程同步读事件,所述读事件用于使所述第一先进先出队列和所述第二先进先出队列的状态一致。
在一种可能的实现方式中,在所述第一先进先出队列中存在第一数据的情况下,所述第一进程中的数据读取线程读取所述第一数据,将第一数据从第一先进先出队列中弹出,并向所述第一请求检测线程发送读请求;所述第一请求检测线程响应于所述读请求,确定与所述第一先进先出队列对应的第二请求检测线程和第二先进先出队列,生成数据同步请求向所述第二请求检测线程发送;所述第二请求检测线程响应于接收到所述数据同步请求,确定与所述数据同步请求对应的第二先进先出队列,将所述第二先进先出队列中与所述数据同步请求对应的第一数据弹出,以使得所述第一先进先出队列和所述第二先进先出队列的状态一致。
在一种可能的实现方式中,在所述第一先进先出队列中不存在第一数据的情况下,所述数据读取线程等待写事件;或,在所述第一先进先出队列中不存在第一数据的情况下,所述数据读取线程确定读取失败,执行其它处理任务。
在一种可能的实现方式中,所述第一进程中的数据写入线程检测所述第一先进先出队列中是否存在可用空间;在所述第一先进先出队列中存在可用空间的情况下,所述第一进程中的数据写入线程写入第二数据,并通过所述第一请求检测线程和第二请求检测线程同步写事件,以使得所述第一先进先出队列和所述第二先进先出队列的状态一致。
在一种可能的实现方式中,在所述第一先进先出队列中存在可用空间的情况下,所述第一进程中的数据写入线程写入第二数据,并向所述第一请求检测线程发送写请求;所述第一请求检测线程响应于所述写请求,确定与所述第一先进先出队列对应的第二请求检测线程和第二先进先出队列,生成数据同步请求向所述第二请求检测线程发送;所述第二请求检测线程响应于接收到数据同步请求,确定与数据同步请求对应的第二先进先出队列,将数据同步请求中的第二数据写入所述第二先进先出队列中,以使得所述第一先进先出队列和所述第二先进先出队列的状态一致。
在一种可能的实现方式中,在所述第一先进先出队列中不存在可用空间的情况下,所述数据写入线程等待读事件;或,在所述第一先进先出队列中不存在可用空间的情况下,所述数据写入线程确定写入失败,执行其它处理任务。
该方法与计算机系统的内部结构存在特定技术关联,且能够解决如何提升硬件运算效率或执行效果的技术问题(包括减少数据存储量、减少数据传输量、提高硬件处理速度等),从而获得符合自然规律的计算机系统内部性能改进的技术效果。
在一些实施例中,本公开实施例提供的方法的具体实现可以参照上文系统实施例的描述,为了简洁,这里不再赘述。
本公开实施例还提出一种计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令被处理器执行时实现上述系统。计算机可读存储介质可以是易失性或非易失性计算机可读存储介质。
本公开实施例还提出一种电子设备,包括:处理器;用于存储处理器可执行指令的存储器;其中,所述处理器被配置为调用所述存储器存储的指令,以实现上述系统。
本公开实施例还提供了一种计算机程序产品,包括计算机可读代码,或者承载有计算机可读代码的非易失性计算机可读存储介质,当所述计算机可读代码在电子设备的处理器中运行时,所述电子设备中的处理器实现上述系统。
电子设备可以被提供为终端、服务器或其它形态的设备。
图9示出根据本公开实施例的一种电子设备1900的框图。例如,电子设备1900可以被提供为一服务器或终端设备。参照图9,电子设备1900包括处理组件1922,其进一步包括一个或多个处理器,以及由存储器1932所代表的存储器资源,用于存储可由处理组件1922的执行的指令,例如应用程序。存储器1932中存储的应用程序可以包括一个或一个以上的每一个对应于一组指令的模块。此外,处理组件1922被配置为执行指令,以实现上述系统的功能。
电子设备1900还可以包括一个电源组件1926被配置为执行电子设备1900的电源管理,一个有线或无线网络接口1950被配置为将电子设备1900连接到网络,和一个输入输出接口1958。电子设备1900可以操作基于存储在存储器1932的操作系统,例如微软服务器操作系统(Windows ServerTM),苹果公司推出的基于图形用户界面操作系统(Mac OS XTM),多用户多进程的计算机操作系统(UnixTM), 自由和开放原代码的类Unix操作系统(LinuxTM),开放原代码的类Unix操作系统(FreeBSDTM)或类似。
在示例性实施例中,还提供了一种非易失性计算机可读存储介质,例如包括计算机程序指令的存储器1932,上述计算机程序指令可由电子设备1900的处理组件1922执行以实现上述系统的功能。
本公开可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本公开的各个方面的计算机可读程序指令。
计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是(但不限于)电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
用于执行本公开操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及常规的过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本公开的各个方面。
这里参照根据本公开实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本公开的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图显示了根据本公开的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
该计算机程序产品可以具体通过硬件、软件或其结合的方式实现。在一个可选实施例中,所述计算机程序产品具体体现为计算机存储介质,在另一个可选实施例中,计算机程序产品具体体现为软件产品,例如软件开发包(Software Development Kit,SDK)等等。
上文对各个实施例的描述倾向于强调各个实施例之间的不同之处,其相同或相似之处可以互相参考,为了简洁,本文不再赘述。
本领域技术人员可以理解,在具体实施方式的上述方法中,各步骤的撰写顺序并不意味着严格的执行顺序而对实施过程构成任何限定,各步骤的具体执行顺序应当以其功能和可能的内在逻辑确定。
若本申请技术方案涉及个人信息,应用本申请技术方案的产品在处理个人信息前,已明确告知个人信息处理规则,并取得个人自主同意。若本申请技术方案涉及敏感个人信息,应用本申请技术方案的产品在处理敏感个人信息前,已取得个人单独同意,并且同时满足“明示同意”的要求。例如,在摄像头等个人信息采集装置处,设置明确显著的标识告知已进入个人信息采集范围,将会对个人信息进行采集,若个人自愿进入采集范围即视为同意对其个人信息进行采集;或者在个人信息处理的装置上,利用明显的标识/信息告知个人信息处理规则的情况下,通过弹窗信息或请个人自行上传其个人信息等方式获得个人授权;其中,个人信息处理规则可包括个人信息处理者、个人信息处理目的、处理方式以及处理的个人信息种类等信息。
以上已经描述了本公开的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。
Claims (11)
1.一种数据传输系统,其特征在于,所述系统基于硬件协同设计语言SystemC实现,所述系统包括第一进程和第二进程,所述第一进程包含至少一个第一请求检测线程以及至少一个第一先进先出队列,所述第二进程包含至少一个第二请求检测线程以及至少一个第二先进先出队列,其中:
所述第一进程中的数据写入线程将数据写入所述第一先进先出队列;
所述第一请求检测线程,通过进程间通信的方式,将所述第一先进先出队列中的数据发送给所述第二请求检测线程;
所述第二请求检测线程,在接收到所述数据的情况下,将所述数据写入所述第二先进先出队列中;
所述第二进程中的数据读取线程从所述第二先进先出队列中读取所述数据,实现SystemC进程的跨进程数据传输。
2.根据权利要求1所述的系统,其特征在于,所述第一进程中的第一请求检测线程在启动后,响应于第一先进先出队列的注册请求,确定本地注册的第一先进先出队列的标识;
所述第一请求检测线程,确定所述第一先进先出队列和第二先进先出队列之间的队列关联关系;
所述第一请求检测线程,通过进程间通信的方式,将第一请求检测线程标识和所述第一先进先出队列的标识发送给第二请求检测线程,并接收所述第二请求检测线程发送的第二请求检测线程标识和第二先进先出队列的标识;
所述第一请求检测线程基于第一先进先出队列的标识、第二先进先出队列的标识和所述关联关系,建立所述第一请求检测线程、第一先进先出队列、第二请求检测线程和第二先进先出队列之间的绑定关系,并对所述绑定关系进行保存。
3.根据权利要求1所述的系统,其特征在于,所述第一进程中的数据读取线程检测所述第一先进先出队列中是否存在数据;
在所述第一先进先出队列中存在第一数据的情况下,所述第一进程中数据读取线程读取所述第一数据,并通过所述第一请求检测线程和第二请求检测线程同步读事件,所述读事件用于使所述第一先进先出队列和所述第二先进先出队列的状态一致。
4.根据权利要求3所述的系统,其特征在于:
在所述第一先进先出队列中存在第一数据的情况下,所述第一进程中的数据读取线程读取所述第一数据,将第一数据从第一先进先出队列中弹出,并向所述第一请求检测线程发送读请求;
所述第一请求检测线程响应于所述读请求,确定与所述第一先进先出队列对应的第二请求检测线程和第二先进先出队列,生成数据同步请求向所述第二请求检测线程发送;
所述第二请求检测线程响应于接收到所述数据同步请求,确定与所述数据同步请求对应的第二先进先出队列,将所述第二先进先出队列中与所述数据同步请求对应的第一数据弹出,以使得所述第一先进先出队列和所述第二先进先出队列的状态一致。
5.根据权利要求3所述的系统,其特征在于,在所述第一先进先出队列中不存在第一数据的情况下,所述数据读取线程等待写事件;或,
在所述第一先进先出队列中不存在第一数据的情况下,所述数据读取线程确定读取失败,执行其它处理任务。
6.根据权利要求1所述的系统,其特征在于,所述第一进程中的数据写入线程检测所述第一先进先出队列中是否存在可用空间;
在所述第一先进先出队列中存在可用空间的情况下,所述第一进程中的数据写入线程写入第二数据,并通过所述第一请求检测线程和第二请求检测线程同步写事件,以使得所述第一先进先出队列和所述第二先进先出队列的状态一致。
7.根据权利要求6所述的系统,其特征在于:
在所述第一先进先出队列中存在可用空间的情况下,所述第一进程中的数据写入线程写入第二数据,并向所述第一请求检测线程发送写请求;
所述第一请求检测线程响应于所述写请求,确定与所述第一先进先出队列对应的第二请求检测线程和第二先进先出队列,生成数据同步请求向所述第二请求检测线程发送;
所述第二请求检测线程响应于接收到数据同步请求,确定与数据同步请求对应的第二先进先出队列,将数据同步请求中的第二数据写入所述第二先进先出队列中,以使得所述第一先进先出队列和所述第二先进先出队列的状态一致。
8.根据权利要求6所述的系统,其特征在于,在所述第一先进先出队列中不存在可用空间的情况下,所述数据写入线程等待读事件;或,
在所述第一先进先出队列中不存在可用空间的情况下,所述数据写入线程确定写入失败,执行其它处理任务。
9.一种数据传输方法,其特征在于,应用于第一进程,所述第一进程包括至少一个第一请求检测线程以及至少一个第一先进先出队列,所述方法包括:
所述第一进程中的数据写入线程将数据写入所述第一先进先出队列;
所述第一请求检测线程,通过进程间通信的方式,将所述第一先进先出队列中的数据发送给第二请求检测线程;
所述第一请求检测线程,通过进程间通信的方式,接收第二进程中的第二请求检测线程发送的数据,将所述数据写入所述第一先进先出队列中;
所述第一进程中的数据写入线程将所述数据写入所述第一先进先出队列,实现SystemC进程的跨进程数据传输。
10.一种电子设备,其特征在于,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为调用所述存储器存储的指令,以实现权利要求1至8中任意一项所述的系统。
11.一种计算机可读存储介质,其上存储有计算机程序指令,其特征在于,所述计算机程序指令被处理器执行时实现权利要求1至8中任意一项所述的系统。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410338917.6A CN117931485B (zh) | 2024-03-22 | 2024-03-22 | 一种数据传输系统及方法、电子设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410338917.6A CN117931485B (zh) | 2024-03-22 | 2024-03-22 | 一种数据传输系统及方法、电子设备和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117931485A CN117931485A (zh) | 2024-04-26 |
CN117931485B true CN117931485B (zh) | 2024-06-07 |
Family
ID=90765105
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410338917.6A Active CN117931485B (zh) | 2024-03-22 | 2024-03-22 | 一种数据传输系统及方法、电子设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117931485B (zh) |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6029205A (en) * | 1994-12-22 | 2000-02-22 | Unisys Corporation | System architecture for improved message passing and process synchronization between concurrently executing processes |
CN101127685A (zh) * | 2007-09-20 | 2008-02-20 | 中兴通讯股份有限公司 | 一种进程间通讯装置及其进程间通讯方法 |
CN102136012A (zh) * | 2010-01-22 | 2011-07-27 | 陈曦 | SystemC系统级综合方法 |
CN102591726A (zh) * | 2011-12-31 | 2012-07-18 | 青岛海信宽带多媒体技术有限公司 | 一种多进程通信方法 |
CN104503854A (zh) * | 2014-12-29 | 2015-04-08 | 成都科来软件有限公司 | 一种进程间通信方法及装置 |
CN108965355A (zh) * | 2017-05-18 | 2018-12-07 | 北京京东尚科信息技术有限公司 | 用于数据传输的方法、装置及计算机可读存储介质 |
CN111367687A (zh) * | 2020-02-28 | 2020-07-03 | 罗普特科技集团股份有限公司 | 进程间数据通信方法和装置 |
CN115470015A (zh) * | 2022-09-06 | 2022-12-13 | 浪潮软件集团有限公司 | 一种基于共享内存的进程间大规模数据传输方法 |
CN116860488A (zh) * | 2023-09-04 | 2023-10-10 | 腾讯科技(深圳)有限公司 | 一种进程通信方法和相关装置 |
CN116932239A (zh) * | 2022-04-08 | 2023-10-24 | 华为技术有限公司 | 数据传输方法及高性能计算设备 |
CN117370046A (zh) * | 2023-10-31 | 2024-01-09 | 阿里巴巴达摩院(杭州)科技有限公司 | 进程间通信方法、系统、设备和存储介质 |
-
2024
- 2024-03-22 CN CN202410338917.6A patent/CN117931485B/zh active Active
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6029205A (en) * | 1994-12-22 | 2000-02-22 | Unisys Corporation | System architecture for improved message passing and process synchronization between concurrently executing processes |
CN101127685A (zh) * | 2007-09-20 | 2008-02-20 | 中兴通讯股份有限公司 | 一种进程间通讯装置及其进程间通讯方法 |
CN102136012A (zh) * | 2010-01-22 | 2011-07-27 | 陈曦 | SystemC系统级综合方法 |
CN102591726A (zh) * | 2011-12-31 | 2012-07-18 | 青岛海信宽带多媒体技术有限公司 | 一种多进程通信方法 |
CN104503854A (zh) * | 2014-12-29 | 2015-04-08 | 成都科来软件有限公司 | 一种进程间通信方法及装置 |
CN108965355A (zh) * | 2017-05-18 | 2018-12-07 | 北京京东尚科信息技术有限公司 | 用于数据传输的方法、装置及计算机可读存储介质 |
CN111367687A (zh) * | 2020-02-28 | 2020-07-03 | 罗普特科技集团股份有限公司 | 进程间数据通信方法和装置 |
CN116932239A (zh) * | 2022-04-08 | 2023-10-24 | 华为技术有限公司 | 数据传输方法及高性能计算设备 |
CN115470015A (zh) * | 2022-09-06 | 2022-12-13 | 浪潮软件集团有限公司 | 一种基于共享内存的进程间大规模数据传输方法 |
CN116860488A (zh) * | 2023-09-04 | 2023-10-10 | 腾讯科技(深圳)有限公司 | 一种进程通信方法和相关装置 |
CN117370046A (zh) * | 2023-10-31 | 2024-01-09 | 阿里巴巴达摩院(杭州)科技有限公司 | 进程间通信方法、系统、设备和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN117931485A (zh) | 2024-04-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10095645B2 (en) | Presenting multiple endpoints from an enhanced PCI express endpoint device | |
WO2017049945A1 (zh) | 加速器虚拟化的方法、装置及集中资源管理器 | |
US20160188320A1 (en) | Unified update tool for multi-protocol network adapter | |
US10452570B1 (en) | Presenting physical devices to virtual computers through bus controllers emulated on PCI express endpoints | |
US10761822B1 (en) | Synchronization of computation engines with non-blocking instructions | |
CN109218356B (zh) | 管理服务器上有状态应用的方法和设备 | |
CN115988217B (zh) | 一种虚拟化视频编解码系统、电子设备和存储介质 | |
US11347546B2 (en) | Task scheduling method and device, and computer storage medium | |
US11175919B1 (en) | Synchronization of concurrent computation engines | |
CN112988346B (zh) | 任务处理方法、装置、设备及存储介质 | |
CN116320469B (zh) | 一种虚拟化视频编解码系统及方法、电子设备和存储介质 | |
CN105049464A (zh) | 用于加速网络虚拟化的技术 | |
CN115080479B (zh) | 传输方法、服务器、设备、裸金属实例及基板管理控制器 | |
US11467946B1 (en) | Breakpoints in neural network accelerator | |
KR102127591B1 (ko) | 이벤트 기반 비동기식 통신 프레임워크에서의 동기식 통신 방법 및 장치 | |
US10009425B1 (en) | Synchronization of transactions utilizing multiple distributed cloud-based services | |
CN117931485B (zh) | 一种数据传输系统及方法、电子设备和存储介质 | |
KR20200048633A (ko) | 소프트웨어 자동 테스트 시스템 및 방법 | |
US10523741B2 (en) | System and method for avoiding proxy connection latency | |
US10922146B1 (en) | Synchronization of concurrent computation engines | |
CN110046138B (zh) | 一种iSCSI目标器多实例处理方法及分布式存储系统 | |
CN109656674B (zh) | 一种计算机设备、虚拟化芯片及数据传输方法 | |
US10379918B2 (en) | System and method for MPI implementation in an embedded operating system | |
CN105991633A (zh) | 会话日志处理方法及装置 | |
CN108847975B (zh) | 基于nfv架构的通信方法、装置、计算机设备及介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant |