CN116166582A - 一种数据的读写方法、系统、设备及存储介质 - Google Patents
一种数据的读写方法、系统、设备及存储介质 Download PDFInfo
- Publication number
- CN116166582A CN116166582A CN202310192299.4A CN202310192299A CN116166582A CN 116166582 A CN116166582 A CN 116166582A CN 202310192299 A CN202310192299 A CN 202310192299A CN 116166582 A CN116166582 A CN 116166582A
- Authority
- CN
- China
- Prior art keywords
- message
- buffer
- data
- buffer area
- writing
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4282—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/0026—PCI express
-
- 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
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Small-Scale Networks (AREA)
Abstract
本发明公开了一种数据的读写方法、系统、设备及存储介质,该方法包括:在车辆中,第一设备与第二设备均接入高速串行计算机扩展总线,第一设备设置为消息的发布者,在环形缓冲器中创建第一缓冲区;第二设备设置为消息的订阅者,在环形缓冲器中创建第二缓冲区;第一设备在生成数据时,将数据封装至消息中,将消息写入第一缓冲区中,将第一缓冲区中的消息通过高速串行计算机扩展总线的直接存储器访问接口传输至第二缓冲区中;第二设备从第二缓冲区中读取消息,对数据进行处理。整体上提高了数据的吞吐量,满足车辆中数据的传输要求,保证数据传输的实时性。
Description
技术领域
本发明涉及车辆的技术领域,尤其涉及一种数据的读写方法、系统、设备及存储介质。
背景技术
车辆为了提高自动驾驶的性能,在车辆中安装许多设备,设备之间会传输数据,例如,摄像头产生的图像数据,会传输至GPU(GraphicsProcessingUnit,图形处理器)等异步架构的处理器检测障碍物。
目前,数据的传输多应用传统的网络协议,由于数据量巨大,使得数据的吞吐量巨大,超出了网络协议的传输能力,导致数据传输延时高。
发明内容
本发明提供了一种数据的读写方法、系统、设备及存储介质,以解决如何降低自动驾驶传输数据的延时的问题。
根据本发明的一方面,提供了一种数据的读写方法,在车辆中,第一设备与第二设备均接入高速串行计算机扩展总线,所述方法包括:
第一设备设置为消息的发布者,在环形缓冲器中创建第一缓冲区;
第二设备设置为消息的订阅者,在环形缓冲器中创建第二缓冲区;
所述第一设备在生成数据时,将所述数据封装至消息中,将所述消息写入所述第一缓冲区中,将所述第一缓冲区中的所述消息通过所述高速串行计算机扩展总线的直接存储器访问接口传输至所述第二缓冲区中;
所述第二设备从所述第二缓冲区中读取所述消息,对所述数据进行处理。
可选地,所述第二设备设置为消息的订阅者,在环形缓冲器中创建第二缓冲区,包括:
若所述第二设备同时订阅多个所述发布者发布的消息,则所述第二设备为每个所述发布者分别设置消息的订阅者,在环形缓冲器中为每个所述订阅者创建第二缓冲区;
所述第二设备从所述第二缓冲区中读取所述消息,对所述数据进行处理,包括:
所述第二设备从各个所述第二缓冲区中读取所述消息,组合多个所述数据同时进行处理。
可选地,所述将所述数据封装至消息中,包括:
对所述数据生成消息;
将与所述数据相关的元数据作为头信息写入所述消息中;
将所述数据作为有效负载写入所述消息中。
可选地,所述将所述消息写入所述第一缓冲区中,包括:
若多台所述第一设备共用同一所述第一缓冲区,则在所述第一缓冲区中预留的内存块中申请空闲的所述内存块;
将所述消息写入空闲的所述内存块中。
可选地,
所述将所述消息写入所述第一缓冲区中,包括:
调用零拷贝接口中的预留方法,将所述消息写入所述第一缓冲区中;
所述将所述第一缓冲区中的所述消息通过所述高速串行计算机扩展总线的直接存储器访问接口传输至所述第二缓冲区中,包括:
调用零拷贝接口中的提交方法,将所述第一缓冲区中的所述消息通过所述高速串行计算机扩展总线的直接存储器访问接口传输至所述第二缓冲区中。
可选地,所述消息包括头信息、有效负载;
所述方法还包括:
所述第二设备在环形缓冲器中创建第三缓冲区,将所述头信息写入所述第三缓冲区中。
可选地,所述第二设备从所述第二缓冲区中读取所述消息、以对所述数据进行处理,包括:
从所述第三缓冲区读取所述头信息;
从所述头信息中读取为所述消息配置的主题的编号;
查询所述主题的编号映射的所述主题的主题信息;
在所述主题的主题信息中读取所述主题的名称;
执行所述主题的名称映射的回调函数,以从所述第二缓冲区中读取所述消息、对所述数据进行处理。
根据本发明的另一方面,提供了一种数据的读写系统,所述数据的读写系统位于车辆中,所述系统包括第一设备与第二设备,所述第一设备与所述第二设备均接入高速串行计算机扩展总线;
所述第一设备,用于设置为消息的发布者,在环形缓冲器中创建第一缓冲区;
所述第二设备,用于设置为消息的订阅者,在环形缓冲器中创建第二缓冲区;
所述第一设备,还用于在生成数据时,将所述数据封装至消息中,将所述消息写入所述第一缓冲区中,将所述第一缓冲区中的所述消息通过所述高速串行计算机扩展总线的直接存储器访问接口传输至所述第二缓冲区中;
所述第二设备,还用于从所述第二缓冲区中读取所述消息,对所述数据进行处理。
可选地,所述第二设备,还用于若所述第二设备同时订阅多个所述发布者发布的消息,则为每个所述发布者分别设置消息的订阅者,在环形缓冲器中为每个所述订阅者创建第二缓冲区;
所述第二设备,还用于从各个所述第二缓冲区中读取所述消息,组合多个所述数据同时进行处理。
可选地,所述第一设备还用于:
对所述数据生成消息;
将与所述数据相关的元数据作为头信息写入所述消息中;
将所述数据作为有效负载写入所述消息中。
可选地,所述第一设备还用于:
若多台所述第一设备共用同一所述第一缓冲区,则在所述第一缓冲区中预留的内存块中申请空闲的所述内存块;
将所述消息写入空闲的所述内存块中。
可选地,所述第一设备,还用于调用零拷贝接口中的预留方法,将所述消息写入所述第一缓冲区中;
所述第一设备,还用于调用零拷贝接口中的提交方法,将所述第一缓冲区中的所述消息通过所述高速串行计算机扩展总线的直接存储器访问接口传输至所述第二设备。
可选地,所述消息包括头信息、有效负载;所述第二设备,还用于在环形缓冲器中创建第三缓冲区,将所述头信息写入所述第三缓冲区中。
可选地,所述第二设备还用于:
从所述第三缓冲区读取所述头信息;
从所述头信息中读取为所述消息配置的主题的编号;
查询所述主题的编号映射的所述主题的主题信息;
在所述主题的主题信息中读取所述主题的名称;
执行所述主题的名称映射的回调函数,以从所述第二缓冲区中读取所述消息、对所述数据进行处理。
根据本发明的另一方面,提供了一种电子设备,所述电子设备包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的计算机程序,所述计算机程序被所述至少一个处理器执行,以使所述至少一个处理器能够执行本发明任一实施例所述的数据的读写方法。
根据本发明的另一方面,提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序用于使处理器执行时实现本发明任一实施例所述的数据的读写方法。
在车辆中,第一设备与第二设备均接入高速串行计算机扩展总线,第一设备设置为消息的发布者,在环形缓冲器中创建第一缓冲区;第二设备设置为消息的订阅者,在环形缓冲器中创建第二缓冲区;第一设备在生成数据时,将数据封装至消息中,将消息写入第一缓冲区中,将第一缓冲区中的消息通过高速串行计算机扩展总线的直接存储器访问接口传输至第二缓冲区中;第二设备从第二缓冲区中读取消息,对数据进行处理。本实施例在直接存储器访问接口的基础上实现了跨设备的Pub/Sub的通讯功能,Pub/Sub的通讯功能提供了高性能的数据传输框架,直接存储器访问接口在该框架下可提高数据的传输速度,从而整体上提高了数据的吞吐量,满足车辆中数据的传输要求,保证数据传输的实时性。
应当理解,本部分所描述的内容并非旨在标识本发明的实施例的关键或重要特征,也不用于限制本发明的范围。本发明的其它特征将通过以下的说明书而变得容易理解。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是根据本发明实施例一提供的一种数据的读写方法的流程图;
图2是根据本发明实施例一提供的一种车辆的架构图;
图3是根据本发明实施例一提供的一种第一设备与第二设备的架构图;
图4是根据本发明实施例一提供的一种消息的读写示意图;
图5是根据本发明实施例二提供的一种数据的读写系统的结构示意图;
图6是实现本发明实施例三提供的一种电子设备的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
实施例一
图1为本发明实施例一提供的一种数据的读写方法的流程图,本实施例可适用于在车辆中跨设备使用DMA(DirectMemoryAccess,直接存储器访问)实现Pub/Sub(publisher/subscriber,发布/订阅)通讯功能情况,该方法可以由数据的读写系统来执行,该数据的系统系统可以采用硬件和/或软件的形式实现,该数据的读写系统包括第一设备、第二设备,该数据的读写系统可配置于车辆中。
在实际应用中,该车辆可根据业务部署具有自动驾驶程序,如垃圾转运车、集装箱卡车、出租车、公交车等。
自动驾驶程序可以指支持自动驾驶的控制程序,所谓自动驾驶,可以指车辆本身拥有环境感知、路径规划并且自主实现车辆控制的能力,也就是用电子技术控制车辆进行的仿人驾驶。
根据对车辆操控任务的把握程度,自动驾驶车辆可以分为L0非自动化(NoAutomotion)、L1驾驶人辅助(DriverAssistance)、L2部分自动化(Partial Automation)、L3有条件自动化(ConditionalAutomation)、L4高自动化(High Automation)、L5全自动化(FullAutomation)。
如图2所示,车辆200可以包括驾驶控制设备201,车身总线202,ECU(ElectronicControlUnit,电子控制单元)203、ECU204、ECU205,传感器206、传感器207、传感器208和执行器件209、执行器件210、执行器件211。
驾驶控制设备(又称为车载大脑)201负责整个车辆200的总体智能控制。驾驶控制设备201可以是单独设置的控制器,例如,CPU、异构处理器(如GPU、TPU(TensorProcessingUnit,张量处理器)、NPU(NeuralnetworkProcessing Unit,神经网络处理器)、DPU(DeeplearningProcessingUnit,深度学习处理器)等)可编程逻辑控制器(ProgrammableLogicController,PLC)、单片机、工业控制机等;也可以是由其他具有输入/输出端口,并具有运算控制功能的电子器件组成的设备;还可以是安装有车辆驾驶控制类应用的计算机设备。驾驶控制设备可以对从车身总线202上接收到的各个ECU发来的数据和/或各个传感器发来的数据进行分析处理,作出相应的决策,并将决策对应的指令发送到车身总线。
车身总线202可以是用于连接驾驶控制设备201,ECU203、ECU204、ECU205,传感器206、传感器207、传感器208以及车辆200的其他未示出的设备的总线。由于CAN(ControllerAreaNetwork,控制器局域网络)总线的高性能和可靠性已被广泛认同,因此目前机动车中常用的车身总线为CAN总线。当然,可以理解的是车身总线也可以是其他类型的总线。
进一步地,在车辆中可布置PCIe(PeripheralComponentInterconnect Express,高速串行计算机扩展)总线,PCIe总线采用了串行互联方式,以点对点的形式进行数据传输,每个设备都可以单独的享用带宽,不共享总线带宽,从而大大提高了传输速率。PCIe总线可支持主动电源管理,错误报告,端对端的可靠性传输,热插拔以及服务质量(QOS)等功能。
车身总线202可以将驾驶控制设备201发出的指令发送给ECU203、ECU204、ECU205,ECU203、ECU204、ECU205再将上述指令进行分析处理后发给相应的执行器件执行。
传感器206、传感器207、传感器208包括但不限于激光雷达、毫米波雷达、摄像头,等等。
应该理解,图2中的车辆、驾驶控制设备、车身总线、ECU、执行器件和传感器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的车辆、驾驶控制设备、车身总线、ECU和传感器。
如图1所示,该方法包括:
步骤101、第一设备设置为消息的发布者,在环形缓冲器中创建第一缓冲区。
车辆在启动自动驾驶的过程中,可调用各种部件检测各种数据,这些原始数据可以为车辆自身的数据,如速度、加速度等,也可以为车辆外部环境的数据,如图像数据、点云数据等,本实施例对此不加以限制。
在本实施中,可将产生数据的组件设置为第一设备,例如,摄像头、激光雷达、毫米波雷达,等等,第一设备接入高速串行计算机扩展总线PCIe。
在本实施中,可应用Pub/Sub的通信模型传输第一设备产生的数据,Pub/Sub的通信模型采用消息作为基本的通信机制,提供大规模系统所要求的松散耦合的交互模式:订阅者以事件订阅的方式表达出它有兴趣接收的一个消息或一类消息;发布者可将订阅者感兴趣的消息随时通知相关订阅者。
Pub/Sub的模型模型允许消息在的多个设备异步广播。促进这一功能的组件是主题Topic。发布者将消息推送给一个Topic,而Topic将立即把消息推送给所有订阅者。
在Pub/Sub的通信模型中,消息会被自动推送给所有的订阅者。
这种方法使得创建事件驱动的服务成为可能,而不需要不断查询消息队列的消息。它还使开发者能够使用相同的消息(数据)创建不同的隔离功能,这些功能可以并行执行(canbeexecutedparallelly),并能够为多个订阅者提供服务。
Pub/Sub模式将发布者与订阅者隔离开来,因此发布者不需要知道消息在哪里被使用,而订阅者不需要知道发布者的情况。这有助于有机地提高应用程序的整体安全性。
在Pub/Sub的通信模型,第一设备设置为消息的发布者publisher,向Pub/Sub的服务器发布可订阅的消息,对消息配置主题的编号(topicid),并将主题的编号(topicid)、主题的名称(topicname)、主题的类型(topictype)等配置为主题信息(topicinfo),在环形缓冲器(Ringbuffer,Ringbuf)中创建一个固定大小的第一缓冲区。
其中,环形缓冲器Ringbuf也称作圆形队列(circularqueue)、循环缓冲区(cyclicbuffer)、圆形缓冲区(circulabuffer)等,是一种用于表示一个固定尺寸、头尾相连的缓冲区的数据结构。
在环形缓冲器Ringbuf中,当一个数据元素被用掉后,其余数据元素不需要移动其存储位置。相反,一个非圆形缓冲区(例如一个普通的队列)在用掉一个数据元素后,其余数据元素需要向前搬移。换句话说,圆形缓冲区适合实现先进先出缓冲区,而非圆形缓冲区适合后进先出缓冲区。
在某些情况中,多个类型相同的第一设备发布类型相同的数据,这些数据可以统一运算,例如,车辆的摄像模组中具有三个摄像头,每个摄像头独立采集图像数据,三个摄像头采集的三路图像数据统一用于检测障碍物,对于此种情况,每个第一设备可以独立在环形缓冲器中创建一个第一缓冲区,多个类型相同的第一设备也可以在环形缓冲器中创建共享的第一缓冲区,本实施例对此不加以限制。
步骤102、第二设备设置为消息的订阅者,在环形缓冲器中创建第二缓冲区。
在本实施中,可将对数据运算的组件设置为第二设备,例如,CPU、GPU,等等,第二设备接入高速串行计算机扩展总线PCIe。
在Pub/Sub的通信模型,第二设备设置为消息的订阅者subscriber,向Pub/Sub的服务器订阅感兴趣的消息,在一映射表中记录主题的编号(topicid)与主题信息(topicinfo)之间的映射关系,以及,在另一映射表中记录主题的名称(topicname)与回调函数callback之间的映射关系,在环形缓冲器Ringbuf中创建一个固定大小的第二缓冲区,其中,第一缓冲区的大小与第二缓冲区的大小相同,第二缓冲区可作为第一缓冲区的映射。
在某些情况中,多个类型相同的第一设备发布类型相同的数据,这些数据可以统一运算,在此情况中,若第二设备同时订阅多个类型相同的发布者发布的消息,则第二设备为每个发布者分别设置消息的订阅者subscriber,在环形缓冲器中为每个订阅者subscriber创建第二缓冲区,其中,记录有主题的名称(topic name)与回调函数callback之间的映射关系的映射表在所有订阅者subscriber之间共享。
步骤103、第一设备在生成数据时,将数据封装至消息中,将消息写入第一缓冲区中,将第一缓冲区中的消息通过高速串行计算机扩展总线的直接存储器访问接口传输至第二缓冲区中。
在实际应用中,PCIe总线提供了DMA接口,DMA传输数据是将数据从一个地址空间复制到另外一个地址空间。当初始化传输动作时,传输动作本身是由DMA控制器来实行和完成。
在实现DMA传输时,是由DMA控制器直接掌管总线,因此,存在着一个总线控制权转移的过程。即DMA传输前,要把总线控制权交给DMA控制器,而在结束DMA传输后,DMA控制器交还总线的控制权。一个完整的DMA传输过程包括DMA请求、DMA响应、DMA传输、DMA结束4个步骤。
1、DMA请求
对DMA控制器初始化,并向I/O(input/output,输入/输出)接口发出操作命令,I/O接口提出DMA请求。
2、DMA响应
DMA控制器对DMA请求判别优先级及屏蔽,向总线裁决逻辑提出总线请求。当CPU执行完当前总线周期即可释放总线控制权。此时,总线裁决逻辑输出总线应答,表示DMA已经响应,通过DMA控制器通知I/O接口开始DMA传输。
3、DMA传输
DMA控制器获得总线控制权后,CPU即刻挂起或只执行内部操作,由DMA控制器输出读写命令,直接控制RAM与I/O接口进行DMA传输。
在DMA控制器的控制下,在存储器和外部设备之间直接进行数据传送,在传送过程中不需要CPU的参与。开始时需提供要传送的数据的起始位置和数据长度。
4、DMA结束
当完成规定的成批数据传送后,DMA控制器即释放总线控制权,并向I/O接口发出结束信号。当I/O接口收到结束信号后,一方面停止I/O设备的工作,另一方面向CPU提出中断请求,使CPU从不介入的状态解脱,并执行一段检查本次DMA传输操作正确性的代码。最后,带着本次操作结果及状态继续执行原来的程序。
由此可见,DMA传输方式无需CPU直接控制传输,也没有中断处理方式那样保留现场和恢复现场的过程,通过硬件为RAM与I/O设备开辟一条直接传送数据的通路,使CPU的效率大为提高。
在本实施例中,如图3所示,Pub/Sub的通信模型是在实现在PCIe总线的DMA接口的基础上,在Pub/Sub的通信模型中的每个组件,均可部署DMATransport(直接存储器访问接口的传输管理器),DMATransport负责控制数据的传输过程。
DMATransport包含了DMAPublisher(应用直接存储器访问接口的消息的发布者)、DMASubscriber(应用直接存储器访问接口的消息的订阅者),第一设备依据业务而调用DMATransport初始化为DMAPublisher,第二设备依据业务而调用DMATransport初始化为DMASubscriber,DMAPublisher通过Pub/Sub的通信模型发布消息(车辆产生的数据),DMASubscriber通过Pub/Sub的通信模型订阅消息(车辆产生的数据)。
第一设备在生成数据时,其驱动程序Driver在接收到数据时,将该数据按照预设的格式封装至消息message中。
在具体实现中,如图4所示,可对该数据生成消息,查询与数据相关的元数据metadata,如主题的编号(topicid)等,将与数据相关的元数据作为头信息(msgheader)写入消息中,并且,将该数据作为有效负载(userpayload)写入消息中,那么,消息message的结构为<msgheader,userpayload>。
如图3所示,第一设备启动为环形缓冲器Ringbuf配置的缓冲写入器(RingbufWriter),缓冲写入器(RingbufWriter)将消息message写入第一缓冲区中。
在具体实现中,缓冲写入器(RingbufWriter)可以调用系统提供的零拷贝接口zero-copy中的预留方法Reserve,将消息写入第一缓冲区中,减少数据拷贝,提高数据的传输速度。
其中,零拷贝接口zero-copy也称零复制,是指计算机执行操作时,CPU不会先将数据从某处内存复制到另一个特定区域。
零拷贝接口zero-copy可以使用多种方法实现,例如,mmap+write、sendfile、sendfile+DMA收集、splice,以sendfile+DMA为例,sendfile将内核空间缓冲区中对应的数据描述信息(文件描述符、地址偏移量等信息)记录到socket缓冲区中。DMA控制器根据socket缓冲区中的地址和偏移量将数据从内核缓冲区拷贝到网卡中,从而省去了内核空间中仅剩1次CPU拷贝。
零拷贝接口zero-copy提供了预留方法Reserve,预留方法Reserve是在环形缓冲器Ringbuf中预留一个内存块block,调起者(即缓冲写入器(Ringbuf Writer))将数据(即消息message)直接写入保留的内存块block中。
在某些情况中,若多台第一设备共用同一第一缓冲区,多台第一设备之间作为消息的发布者发布消息时,会存在竞争,此时,可提供无锁并发的发布机制,第一缓冲区预留有部分内存块block,内存块block具有数组(位置,大小)(reserved_pos,reserved_size),则在调用预留方法Reserve时,遍历数组,在第一缓冲区中预留的内存块block中申请空闲的内存块block。
若申请成功,则保留该空闲的内存块block,将消息message写入空闲的内存块block中,以此保证每台第一设备均可正常发布消息message。
如图3所示,第一设备启动为DMA接口配置的直接存储器访问接口写入器(DMAWriter),直接存储器访问接口写入器(DMAWriter)将第一缓冲区中的消息message通过PCIe总线提供的DMA接口传输至第二设备,尤其为映射至第二设备的第二缓冲区中。
在具体实现中,直接存储器访问接口写入器(DMAWriter)可以调用系统提供的零拷贝接口zero-copy中的提交方法Commmit,将第一缓冲区中的消息message通过高速串行计算机扩展总线的直接存储器访问接口传输至第二设备,尤其为映射至第二设备的第二缓冲区中,减少数据拷贝,提高数据的传输速度。
此后,直接存储器访问接口写入器(DMAWriter)可以调用系统提供的零拷贝接口zero-copy中的释放方法Discard,释放消息message占据的内存,待其他消息message使用。
如图3所示,第二设备启动为DMA接口配置的直接存储器访问接口读取器(DMAReader),直接存储器访问接口读取器(DMAReader)在通过PCIe总线的DMA接口接收到消息message时,将消息写入第二缓冲区中。
在实际应用中,消息message包括头信息header、有效负载userpayload,第二设备可在环形缓冲器Ringbuf中为头信息header创建第三缓冲区(Ring bufferofmsgheader),第三缓冲区专门用于存储各条消息message的头信息header。
如图4所示,除了将消息message写入第二缓冲区中,保持消息message的结构为<msgheader,userpayload>,还可以将头信息(Msgheader)写入第三缓冲区中,便于读取消息message。
将头信息(Msgheader)中的一些元数据metadata,可用于更新第二缓冲区的头尾指针等信息。
为使本领域技术人员更好地理解本实施例,以下通过具体的示例来说明本实施例中非锁的数据传输方法。
车辆的摄像模组中具有三个摄像头,分别记为camera_left、camera_center、camera_right,均作为第一设备,其中,camera_left的线程1、camera_right的线程2均发现各自camera都有硬件故障,报告给下游的第二设备。
camera_left、camera_center、camera_right公用一个第一缓冲区,其中公用主题topic/adv_fault发送故障信息,此时,camera_left的线程1、camera_right的线程2同时往/adv_fault发故障信息。
camera_left的线程1从第一缓冲区申请并保存一个空闲的内存块block,camera_right的线程2从第一缓冲区申请并保存另一个空闲的内存块block。
camera_left的线程1往其申请的内存块填故障信息(消息)并提交commit故障信息,camera_right的线程2往其申请的内存块填故障信息(消息)并提交commit故障信息。
虽然主题topic/adv_fault的缓冲区是共享的,但是camera_left的线程1、camera_right的线程2互不干扰,能并发传送故障信息。
此外,在单个DMA的通道中,不同第一设备作为发布者publisher发布的消息的主题topic可以相同,可以不同,本实施例对此不加以限制。
为使本领域技术人员更好地理解本实施例,以下通过具体的示例来说明本实施例中在单个DMA通道中实现多个主题topic通讯的方法。
车辆的摄像模组中具有三个摄像头,分别记为camera_left、camera_center、camera_right,均作为发布者publisher,每个摄像头申请一个主题,并分配一个主题的编号:topic[1]→camera_left,topic[2]→camera_center,topic[3]→camera_right。这个映射关系发送给GPU的订阅者subscriber。
GPU的订阅者subscriber订阅其中两个摄像头的主题并设置回调函数:camera_left→callback_left,camera_right→callback_right。
摄像模组以10hz发送图像数据到3个主题topics,<topic[1],image1>,
<topic[2],image2>,<topic[3],image3>。
GPU轮询,每接收到一个消息<topic[1],image1>则通过topic[1]→
camer_left,camera_left→callback_left,找到对应的回调函数处理该图像数据,每接收到一个消息<topic[3],image3>则通过topic[3]→camer_right,camera_right→callback_right,找到对应的回调函数处理该图像数据。
步骤104、第二设备从第二缓冲区中读取消息,对数据进行处理。
第二设备启动为环形缓冲器Ringbuf配置的缓冲读取器(RingbufReader),读取器(RingbufReader)从第二缓冲区中订阅的消息message,从消息message中读取有效负载(userpayload),得到第一设备产生的数据,并按照业务对数据进行处理。
如果第二设备同时订阅多台类型相同的第一设备发布的消息message(数据),则第二设备可以轮询各个对发布者创建的第二缓冲区,从各个第二缓冲区中读取消息message,组合多个数据同时进行处理。
在具体实现中,可以从第三缓冲区读取头信息header,从头信息header中读取为消息message配置的主题的编号(topicid)。
从预置的映射表中查询主题的编号(topicid)映射的主题的主题信息(topicinfo),在主题的主题信息中读取主题的名称(topicname),从预置的映射表中查询主题的名称(topicname)映射的回调函数callback,执行主题的名称(topicname)映射的回调函数callback,以从第二缓冲区中读取消息message、对数据进行处理,例如,检测障碍物、检测红绿灯、检测车道线,等等。
在车辆中,第一设备与第二设备均接入高速串行计算机扩展总线,第一设备设置为消息的发布者,在环形缓冲器中创建第一缓冲区;第二设备设置为消息的订阅者,在环形缓冲器中创建第二缓冲区;第一设备在生成数据时,将数据封装至消息中,将消息写入第一缓冲区中,将第一缓冲区中的消息通过高速串行计算机扩展总线的直接存储器访问接口传输至第二缓冲区中;第二设备从第二缓冲区中读取消息,对数据进行处理。本实施例在直接存储器访问接口的基础上实现了跨设备的Pub/Sub的通讯功能,Pub/Sub的通讯功能提供了高性能的数据传输框架,直接存储器访问接口在该框架下可提高数据的传输速度,从而整体上提高了数据的吞吐量,满足车辆中数据的传输要求,保证数据传输的实时性。
实施例二
图5为本发明实施例二提供的一种数据的读写系统的结构示意图。所述数据的读写系统位于车辆中,图如5所示,所述系统包括第一设备510与第二设备520,所述第一设备与所述第二设备均接入高速串行计算机扩展总线;
所述第一设备510,用于设置为消息的发布者,在环形缓冲器中创建第一缓冲区;
所述第二设备520,用于设置为消息的订阅者,在环形缓冲器中创建第二缓冲区;
所述第一设备510,还用于在生成数据时,将所述数据封装至消息中,将所述消息写入所述第一缓冲区中,将所述第一缓冲区中的所述消息通过所述高速串行计算机扩展总线的直接存储器访问接口传输至所述第二缓冲区中;
所述第二设备520,还用于从所述第二缓冲区中读取所述消息,对所述数据进行处理。
在本发明的一个实施例中,所述第二设备520,还用于若所述第二设备同时订阅多个所述发布者发布的消息,则为每个所述发布者分别设置消息的订阅者,在环形缓冲器中为每个所述订阅者创建第二缓冲区;
所述第二设备520,还用于从各个所述第二缓冲区中读取所述消息,组合多个所述数据同时进行处理。
在本发明的一个实施例中,所述第一设备510还用于:
对所述数据生成消息;
将与所述数据相关的元数据作为头信息写入所述消息中;
将所述数据作为有效负载写入所述消息中。
在本发明的一个实施例中,所述第一设备510还用于:
若多台所述第一设备共用同一所述第一缓冲区,则在所述第一缓冲区中预留的内存块中申请空闲的所述内存块;
将所述消息写入空闲的所述内存块中。
在本发明的一个实施例中,所述第一设备510,还用于调用零拷贝接口中的预留方法,将所述消息写入所述第一缓冲区中;
所述第一设备510,还用于调用零拷贝接口中的提交方法,将所述第一缓冲区中的所述消息通过所述高速串行计算机扩展总线的直接存储器访问接口传输至所述第二设备。
在本发明的一个实施例中,所述消息包括头信息、有效负载;所述第二设备520,还用于在环形缓冲器中创建第三缓冲区,将所述头信息写入所述第三缓冲区中。
在本发明的一个实施例中,所述第二设备520还用于:
从所述第三缓冲区读取所述头信息;
从所述头信息中读取为所述消息配置的主题的编号;
查询所述主题的编号映射的所述主题的主题信息;
在所述主题的主题信息中读取所述主题的名称;
执行所述主题的名称映射的回调函数,以从所述第二缓冲区中读取所述消息、对所述数据进行处理。
本发明实施例所提供的数据的读写系统可执行本发明任意实施例所提供的数据的读写方法,具备执行数据的读写方法相应的功能模块和有益效果。
实施例三
图6示出了可以用来实施本发明的实施例的电子设备10的结构示意图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备(如头盔、眼镜、手表等)和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本发明的实现。
如图6所示,电子设备10包括至少一个处理器11,以及与至少一个处理器11通信连接的存储器,如只读存储器(ROM)12、随机访问存储器(RAM)13等,其中,存储器存储有可被至少一个处理器执行的计算机程序,处理器11可以根据存储在只读存储器(ROM)12中的计算机程序或者从存储单元18加载到随机访问存储器(RAM)13中的计算机程序,来执行各种适当的动作和处理。在RAM13中,还可存储电子设备10操作所需的各种程序和数据。处理器11、ROM12以及RAM13通过总线14彼此相连。输入/输出(I/O)接口15也连接至总线14。
电子设备10中的多个部件连接至I/O接口15,包括:输入单元16,例如键盘、鼠标等;输出单元17,例如各种类型的显示器、扬声器等;存储单元18,例如磁盘、光盘等;以及通信单元19,例如网卡、调制解调器、无线通信收发机等。通信单元19允许电子设备10通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
处理器11可以是各种具有处理和计算能力的通用和/或专用处理组件。处理器11的一些示例包括但不限于中央处理单元(CPU)、图形处理单元(GPU)、各种专用的人工智能(AI)计算芯片、各种运行机器学习模型算法的处理器、数字信号处理器(DSP)、以及任何适当的处理器、控制器、微控制器等。处理器11执行上文所描述的各个方法和处理,如数据的读写方法。
在一些实施例中,数据的读写方法可被实现为计算机程序,其被有形地包含于计算机可读存储介质,例如存储单元18。在一些实施例中,计算机程序的部分或者全部可以经由ROM12和/或通信单元19而被载入和/或安装到电子设备10上。当计算机程序加载到RAM13并由处理器11执行时,可以执行上文描述的数据的读写方法的一个或多个步骤。备选地,在其他实施例中,处理器11可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行数据的读写方法。
本文中以上描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、芯片上系统的系统(SOC)、负载可编程逻辑设备(CPLD)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
用于实施本发明的方法的计算机程序可以采用一个或多个编程语言的任何组合来编写。这些计算机程序可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器,使得计算机程序当由处理器执行时使流程图和/或框图中所规定的功能/操作被实施。计算机程序可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
在本发明的上下文中,计算机可读存储介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的计算机程序。计算机可读存储介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。备选地,计算机可读存储介质可以是机器可读信号介质。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
为了提供与用户的交互,可以在电子设备上实施此处描述的系统和技术,该电子设备具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给电子设备。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)、区块链网络和互联网。
计算系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。服务器可以是云服务器,又称为云计算服务器或云主机,是云计算服务体系中的一项主机产品,以解决了传统物理主机与VPS服务中,存在的管理难度大,业务扩展性弱的缺陷。
实施例四
本发明实施例还提供了一种计算机程序产品,该计算机程序产品包括计算机程序,该计算机程序在被处理器执行时实现如本发明任一实施例所提供的数据的读写方法。
计算机程序产品在实现的过程中,可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,程序设计语言包括面向对象的程序设计语言,诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言,诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本发明中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本发明的技术方案所期望的结果,本文在此不进行限制。
上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。
Claims (10)
1.一种数据的读写方法,其特征在于,在车辆中,第一设备与第二设备均接入高速串行计算机扩展总线,所述方法包括:
第一设备设置为消息的发布者,在环形缓冲器中创建第一缓冲区;
第二设备设置为消息的订阅者,在环形缓冲器中创建第二缓冲区;
所述第一设备在生成数据时,将所述数据封装至消息中,将所述消息写入所述第一缓冲区中,将所述第一缓冲区中的所述消息通过所述高速串行计算机扩展总线的直接存储器访问接口传输至所述第二缓冲区中;
所述第二设备从所述第二缓冲区中读取所述消息,对所述数据进行处理。
2.根据权利要求1所述的方法,其特征在于,所述第二设备设置为消息的订阅者,在环形缓冲器中创建第二缓冲区,包括:
若所述第二设备同时订阅多个所述发布者发布的消息,则所述第二设备为每个所述发布者分别设置消息的订阅者,在环形缓冲器中为每个所述订阅者创建第二缓冲区;
所述第二设备从所述第二缓冲区中读取所述消息,对所述数据进行处理,包括:
所述第二设备从各个所述第二缓冲区中读取所述消息,组合多个所述数据同时进行处理。
3.根据权利要求1所述的方法,其特征在于,所述将所述数据封装至消息中,包括:
对所述数据生成消息;
将与所述数据相关的元数据作为头信息写入所述消息中;
将所述数据作为有效负载写入所述消息中。
4.根据权利要求1所述的方法,其特征在于,所述将所述消息写入所述第一缓冲区中,包括:
若多台所述第一设备共用同一所述第一缓冲区,则在所述第一缓冲区中预留的内存块中申请空闲的所述内存块;
将所述消息写入空闲的所述内存块中。
5.根据权利要求1所述的方法,其特征在于,
所述将所述消息写入所述第一缓冲区中,包括:
调用零拷贝接口中的预留方法,将所述消息写入所述第一缓冲区中;
所述将所述第一缓冲区中的所述消息通过所述高速串行计算机扩展总线的直接存储器访问接口传输至所述第二缓冲区中,包括:
调用零拷贝接口中的提交方法,将所述第一缓冲区中的所述消息通过所述高速串行计算机扩展总线的直接存储器访问接口传输至所述第二缓冲区中。
6.根据权利要求1-5中任一项所述的方法,其特征在于,所述消息包括头信息、有效负载;
所述方法还包括:
所述第二设备在环形缓冲器中创建第三缓冲区,将所述头信息写入所述第三缓冲区中。
7.根据权利要求6所述的方法,其特征在于,所述第二设备从所述第二缓冲区中读取所述消息、以对所述数据进行处理,包括:
从所述第三缓冲区读取所述头信息;
从所述头信息中读取为所述消息配置的主题的编号;
查询所述主题的编号映射的所述主题的主题信息;
在所述主题的主题信息中读取所述主题的名称;
执行所述主题的名称映射的回调函数,以从所述第二缓冲区中读取所述消息、对所述数据进行处理。
8.一种数据的读写系统,其特征在于,所述数据的读写系统位于车辆中,所述系统包括第一设备与第二设备,所述第一设备与所述第二设备均接入高速串行计算机扩展总线;
所述第一设备,用于设置为消息的发布者,在环形缓冲器中创建第一缓冲区;
所述第二设备,用于设置为消息的订阅者,在环形缓冲器中创建第二缓冲区;
所述第一设备,还用于在生成数据时,将所述数据封装至消息中,将所述消息写入所述第一缓冲区中,将所述第一缓冲区中的所述消息通过所述高速串行计算机扩展总线的直接存储器访问接口传输至所述第二缓冲区中;
所述第二设备,还用于从所述第二缓冲区中读取所述消息,对所述数据进行处理。
9.一种电子设备,其特征在于,所述电子设备包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的计算机程序,所述计算机程序被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1-7中任一项所述的数据的读写方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序用于使处理器执行时实现权利要求1-7中任一项所述的数据的读写方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310192299.4A CN116166582A (zh) | 2023-03-02 | 2023-03-02 | 一种数据的读写方法、系统、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310192299.4A CN116166582A (zh) | 2023-03-02 | 2023-03-02 | 一种数据的读写方法、系统、设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116166582A true CN116166582A (zh) | 2023-05-26 |
Family
ID=86421802
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310192299.4A Pending CN116166582A (zh) | 2023-03-02 | 2023-03-02 | 一种数据的读写方法、系统、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116166582A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116956164A (zh) * | 2023-09-18 | 2023-10-27 | 中国科学院精密测量科学与技术创新研究院 | 基于wasm技术的全高层大气激光雷达数据处理方法 |
-
2023
- 2023-03-02 CN CN202310192299.4A patent/CN116166582A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116956164A (zh) * | 2023-09-18 | 2023-10-27 | 中国科学院精密测量科学与技术创新研究院 | 基于wasm技术的全高层大气激光雷达数据处理方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10521393B2 (en) | Remote direct memory access (RDMA) high performance producer-consumer message processing | |
JPH03126158A (ja) | スケジユーリング方法及び装置 | |
US11709620B2 (en) | Methods and systems for memory management in a publish and subscribe system | |
EP3529706A1 (en) | Gpu remote communication with triggered operations | |
KR101557833B1 (ko) | 머신 비젼 애플리케이션을 위한 멀티-코어 분산형 처리 | |
CN116243995B (zh) | 通信方法、装置、计算机可读存储介质以及电子设备 | |
JPH0816540A (ja) | 並列計算機におけるメッセージ通信方式 | |
CN109981473B (zh) | 一种实时消息总线系统 | |
CN116166582A (zh) | 一种数据的读写方法、系统、设备及存储介质 | |
CN114595186B (zh) | 一种多核处理器的核间通信方法、通信装置 | |
CN112445735A (zh) | 一种联邦学习数据传输方法、计算机设备、系统及存储介质 | |
CN113296979B (zh) | 一种虚幻引擎与外部程序的数据通信方法 | |
CN111400073B (zh) | 基于汽车开放架构系统到统一软硬件表示的形式化系统模型转换和可靠性分析方法 | |
US6466993B1 (en) | Method and apparatus for performing transactions rendering between host processors and I/O devices using concurrent non-blocking queuing techniques and I/O bus write operations | |
CN111078618A (zh) | 电子设备以及双处理器的通信方法 | |
CN110990169A (zh) | 一种利用共享内存进行进程间字节流通信的结构及方法 | |
US11363099B2 (en) | Methods and systems for enabling publish-subscribe message transmission in a distributed environment | |
CN114697194A (zh) | 阻塞式事件通知方法及装置 | |
CN113778706A (zh) | 一种基于amp架构的操作系统核间通信方法 | |
US11429290B2 (en) | Methods and systems for providing a lockless access to a shared memory region in a publish and subscribe system | |
Trifunović et al. | Data Exchange Interfaces in Automotive SOA | |
CN116743587B (zh) | 一种基于异构计算加速卡的虚拟网络接口实现方法及装置 | |
CN115542772B (zh) | 一种仿真任务的控制方法、装置及仿真系统 | |
CN113610135B (zh) | 一种图像处理方法、装置、计算机设备和存储介质 | |
WO2022103708A1 (en) | Methods and systems for providing a lockless access to a shared memory region in a publish and subscribe system |
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 |