CN109032821B - 自动驾驶主题消息处理方法、装置、设备及存储介质 - Google Patents
自动驾驶主题消息处理方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN109032821B CN109032821B CN201810982356.8A CN201810982356A CN109032821B CN 109032821 B CN109032821 B CN 109032821B CN 201810982356 A CN201810982356 A CN 201810982356A CN 109032821 B CN109032821 B CN 109032821B
- Authority
- CN
- China
- Prior art keywords
- message
- current
- index value
- data
- queue
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
Abstract
本发明实施例公开了一种主题消息处理方法、装置、设备和存储介质。该方法包括:获取消息存储指令,其中所述消息存储指令中包括待存储的当前消息内容和所述当前消息内容所属的当前主题信息;依据所述当前主题信息,将所述当前消息内容存储到公共数据缓存区中当前主题关联的消息队列中。一个主题只维护一个消息队列,无需在多个算法模块中设置多个缓存列来缓存同一个主题的消息内容,降低了传输时延,提高了数据传输的效率,减少了内存空间的占用。
Description
技术领域
本发明实施例涉及通信技术领域,尤其涉及一种主题消息处理方法、装置、设备及存储介质。
背景技术
无人车即自动驾驶汽车,是一种集自动控制、视觉计算、体系结构等众多技术于一体的高度发展的智能汽车,主要依靠车内的以计算机系统为主的驾驶控制系统来实现无人驾驶。无人车可作为衡量一个国家科研实力和工业水平的重要标志,在国防和国民经济领域具有广阔的应用前景。
自动驾驶系统中,诸如传感驱动、感知、定位和控制等多个算法模块会同时读取同一个主题(也可以称为频道或通道)的数据,如定位信息。因为每个算法模块的处理时间有差别,所以在每个算法模块对应的读写器(也可以称为订阅者)会维护一个有限长度消息队列,通过缓存一部分消息来避免消息丢失未处理的现象。这种实现方式有两个缺点,一是同一份数据需要复制到不同的缓存列中,会增加传输时延,二是同一份数据存储多份,会造成内存空间的浪费。
发明内容
本发明实施例提供一种主题消息处理方法、装置、设备和存储介质,以降低数据的传输时延,减少内存空间的占用。
第一方面,本发明实施例提供了一种主题消息处理方法,该方法包括:
获取消息存储指令,其中所述消息存储指令中包括待存储的当前消息内容和所述当前消息内容所属的当前主题信息;
依据所述当前主题信息,将所述当前消息内容存储到公共数据缓存区中当前主题关联的消息队列中。
第二方面,本发明实施例还提供了一种主题消息处理装置,该装置包括:
存储指令获取模块,用于获取消息存储指令,其中所述消息存储指令中包括待存储的当前消息内容和所述当前消息内容所属的当前主题信息;
存储模块,用于依据所述当前主题信息,将所述当前消息内容存储到公共数据缓存区中当前主题关联的消息队列中。
第三方面,本发明实施例还提供了一种设备,该设备包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现本发明实施例中的任一种主题消息处理方法。
第四方面,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现本发明实施例中的任一种主题消息处理方法。
本发明实施例通过获取包含待存储的当前消息内容和当前消息内容所述的当前主题信息的消息存储指令,依据当前主题信息,将当前消息内容存储到公共数据缓存区中当前主题关联的消息队列中,一个主题只维护一个消息队列,无需在多个算法模块中设置多个缓存列来缓存同一个主题的消息内容,降低了传输时延,提高了数据传输的效率,减少了内存空间的占用。
附图说明
图1是本发明实施例一中的一种主题消息处理方法的流程图;
图2是本发明实施例二中的一种主题消息处理方法的流程图;
图3是本发明实施例三中的一种主题消息处理方法的流程图;
图4是本发明实施例四中的一种主题消息处理装置的结构示意图;
图5是本发明实施例五中的一种设备的结构示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
实施例一
本实施例提供的主题消息处理方法可适用于获取消息存储指令并将消息内容存储至相应的公共数据缓存区的情况,该方法可以由主题消息处理装置来执行,该装置可以由软件和/或硬件的方式实现,该装置可以集成在终端(例如自动驾驶移动载体的控制框架)中。参见图1,本实施的方法具体包括如下步骤:
S110、获取消息存储指令。
在自动驾驶系统中,不同算法模块通过主题进行消息传输,例如某一算法模块可以将待传输的消息内容发布到主题上,通过主题将消息内容传输给订阅主题的其他算法模块。在自动驾驶系统中包括的算法模块确定的情况下,各算法模块之间进行消息传输的主题一般也确定,也就是说自动驾驶系统中主题的数量一般是固定的。
其中,消息存储指令中包括待存储的当前消息内容和当前消息内容所属的当前主题信息。当前消息内容为检测模块检测并存储在主存储器中的数据信息,在本实施例中,当前消息内容可以是需要调用的雷达检测到的点云数据、定位模块检测的位置数据或图像采集模块采集的图像数据等。当前消息内容所属的当前主题是指传输当前消息内容的主题,当前主题信息是指当前主题的标识(name)、类型(type)和描述(description)等。
在本实施例中的一种可选实现方式中,自动驾驶移动载体中包括的算法模块向当前主题发布当前消息内容,自动驾驶移动载体中的线程包括当前消息内容和当前主题信息的消息存储指令。
S120、依据所述当前主题信息,将所述当前消息内容存储到公共数据缓存区中当前主题关联的消息队列中。
在本实施例中,预先为线程构建有公共数据缓存区,在公共数据缓存区中维护有每个主题的消息队列,也就是说在公共数据缓存区中主题与消息队列之间是一一对应关系,每个消息队列用于存储通过对应的主题传输的消息数据,供不同处理速度的算法模块进行取用。其中,公共数据缓存区可以是高速缓存存储器。
因此,本实施例中通过每一主题传输的消息只需存储到一个消息队列中,避免了消息重复存储导致的内存占用。譬如,定位模块将定位消息内容通过某一主题进行传输,则只在该主题的消息队列中存储定位消息内容。若诸如传感驱动、感知、定位和控制等多个算法模块需要读取定位消息内容,则均从该主题的消息队列中获取。
具体的,公共数据缓存区获取到消息存储指令后,根据当前主题信息确定当前消息内容对应的存储位置,将当前消息内容写入公共数据缓存区中对应的消息队列的位置中。
本实施例的技术方案,通过获取包含待存储的当前消息内容和当前消息内容所述的当前主题信息的消息存储指令,依据当前主题信息,将当前消息内容存储到公共数据缓存区中当前主题关联的消息队列中,一个主题只维护一个消息队列,无需在多个算法模块中设置多个缓存列来缓存同一个主题的消息内容,降低了传输时延,提高了数据传输的效率,减少了内存空间的占用。
实施例二
本实施例在上述实施例的基础上进行了优化,其中与上述各实施例相同或相应的术语的解释在此不再赘述。参见图2,本实施例提供的主题消息处理方法包括:
S210、获取消息存储指令。
其中,消息存储指令中包括待存储的当前消息内容和当前消息内容所属的当前主题信息。
S220、依据所述当前主题信息,将所述当前消息内容存储到公共数据缓存区中当前主题关联的消息队列中。
示例性的,所述消息队列是定长的循环队列。
其中,循环队列的长度为预先设置的长度,可以根据各算法模块的数据处理速度进行设置,不用主题对应的循环队列的长度可以相同,也可以不同。采用定长的循环队列进行消息存储,避免了动态为循环队列分配内存,从而提高了系统性能的稳定性。
S230、控制调整当前消息队列的尾部索引取值,得到新尾部索引取值。
在本实施例的一种可选实施方式中,在初始条件下,消息队列的尾部索引取值和头部索引取值均赋值为0,相应地,控制当前消息队列的尾部索引取值加一,得到新尾部索引取值。具体的,在获取到与当前消息队列对应的消息存储指令后,将消息内容存储至当前消息队列中尾部索引值指向的队列位置,每写入一个数据,当前消息队列的尾部索引值加一,得到新的尾部索引取值,指向下一次消息内容的存储位置。
S240、若所述新尾部索引取值指向的队列位置与当前消息队列的头部索引取值指向的队列位置相同,则控制调整头部索引取值,得到新头部索引取值。
具体的,S230中得到新尾部索引取值之后,若所述新尾部索引取值指向的队列位置与当前消息队列的头部索引取值指向的队列位置相同,说明当前主题关联的消息队列已写满数据,则控制调整头部索引取值得到新头部索引取值,从而将调整前的头部索引取值对应的队列位置作为当前消息内容的存储位置。
在本实施例中的一种可选方式中,消息队列为定长的循环队列,初始条件下,消息队列的索引值可以均赋值为0,在消息队列写满之前,每向消息队列写入一个数据,尾部索引取值增加1,头部索引取值不变。在消息队列写满之后,由于消息队列的长度是固定的,新存储的数据会覆盖掉先前头部索引指向位置的数据,相应的,每存入一个数据,头部索引指向的位置会后移一位,头部索引取值和尾部索引取值均会加一得到新的头部索引取值和尾部索引取值。
可选地,可以通过如下方式确定新尾部索引取值指向的队列位置与当前消息队列的头部索引取值指向的队列位置是否相同:新尾部索引取值对消息队列的长度取模,如果计算结果等于当前消息队列头部索引取值,则新尾部索引取值指向的队列位置与当前消息队列的头部索引取值指向的队列位置相同,消息队列处于写满状态,头部索引取值加1。例如,消息队列的长度为100,当前消息队列的头部索引取值为0,尾部索引取值为99,99加1后得到新的尾部索引取值为100,此时,新的尾部索引取值100除以消息队列的长度100后,得到的余数为0,等于当前消息队列的头部索引取值,表明当前消息队列处于写满状态。
需要说明的是,若所述新尾部索引取值指向的队列位置与当前消息队列的头部索引取值指向的队列位置不同,则不用更新头部索引取值。
本实施例的技术方案,通过获取包含待存储的当前消息内容和当前消息内容所述的当前主题信息的消息存储指令,依据当前主题信息,将当前消息内容存储到公共数据缓存区中当前主题关联的消息队列中,一个主题只维护一个消息队列,无需在多个算法模块中设置多个缓存列来缓存同一个主题的消息内容,降低了传输时延,提高了数据传输的效率,减少了内存空间的占用。通过设置订场的循环队列作为消息队列,使得消息队列在公共数据缓存区中长度和位置固定,避免了动态分配内存,减少了频繁申请内存并释放,提高了消息处理过程中的稳定性。
实施例三
本实施例提供的主题消息处理方法可适用于获取消息读取指令,将相应消息反馈给读写器的情况,该方法可以由主题消息处理装置来执行,该装置可以由软件和/或硬件的方式实现,该装置可以集成在任何具有通信功能的设备中,例如计算机或服务器等。参见图3,本实施例的方法具体包括如下步骤:
S310、获取当前读写器的消息读取指令。
在本实施例中,每个算法模块中包含一个读写器,用于读取当前算法模块所需要的数据,所有算法模块中的读写器均可以从公共数据缓存区中读取数据。在某一算法模块中的读写器读取公共数据缓存区中的数据时,算法模块的线程会获取该读写器发出的消息读取指令。
其中,消息读取指令包括目标主题信息和待读取数据的目标长度。目标主题信息为当前算法模块需要的数据的主题信息,通过目标主题信息,可以确定待读取数据对应的消息队列。例如,当前算法模块为控制模块,需要读取汽车的位置信息,则可以根据目标主题信息,读取公共数据缓存区中对应消息队列中的汽车位置信息。待读取数据的目标长度为当前算法模块所需的待读取数据的个数,不同的算法模块和同一算法模块的不同时刻,待读取数据的目标长度可能不同。
S320、将所述目标主题信息关联的消息队列中最新的目标长度个消息反馈给当前读写器。
公共数据缓存区获取到读写器的消息读取指令后,根据目标主题信息确定待读取数据对应的位置信息,根据目标长度确定待读取数据的个数,将当前算法模块需要的数据信息反馈至读写器。
示例性的,在读写器读取对应消息队列中的数据时,读取当前消息队列中最新的目标长度个数据。例如,当前目标主题信息对应的消息队列的尾部索引取值为m,需要读取的数据的长度为n,则在读写器读取公共数据缓存区中的数据时,公共数据缓存区会将目标主题信息对应的消息队列中的第m-n+1至第m个数据反馈至读写器,使得读写器每次读取到的数据为当前消息队列中最新的目标长度个数据。
S330、确定所述最新读取位置的下一位置是否是从消息队列中读取的首个消息位置,若不是,则执行S340;若是,则执行S350。
示例性的,所述消息读取指令中还包括当前读写器的最新读取位置。
具体地,公共数据缓存区将数据信息反馈至读写器时,同时会将数据信息的索引值反馈至读写器。在读写器进行下一次消息读取时,消息读取指令中会包含下一次待读取数据的索引值。例如,公共数据缓存区将目标主题信息对应的消息队列中的第m-n+1至第m个数据反馈至读写器时,同时会将第m个数据的索引值m反馈至读写器,在进行下一次消息读取时,读写器发出的消息指令中会包括最新读取位置为索引值为m时指向的位置。
在读写器读取对应消息队列中的数据时,公共数据缓存区会判断读写器已读取的最新位置的下一位置是否为将当前消息队列中读取的首个消息位置。例如,读写器的最新读取位置为索引值为m时指向的位置,则将m+1与公共数据缓存区中当前消息队列中读取的首个消息位置的索引值相比较。
S340、确定存在消息读写异常。
示例性的,如果读写器最新读取位置的下一位置与公共数据缓存区消息队列中读取的首个消息位置不同,则表明在主题消息处理过程中存在异常。如果读写器最新读取位置的下一位置的索引值小于公共数据缓存区消息队列中读取的首个消息位置的索引值,则表明对应算法模块中的读写器可能一段时间并未工作或者出现故障,如果读写器最新读取位置的下一位置的索引值大于公共数据缓存区消息队列中读取的首个消息位置的索引值,则表明在消息存储过程中可能在一段时间内出现故障。
S350、确定消息读取正常。需要说明的是,不论最新读取位置的下一位置是否是从消息队列中读取的首个消息位置,即不论消息读取正常与否,在读写器读取对应消息队列中的数据时,公共数据缓存区均会将当前消息队列中最新的目标长度个数据反馈至读写器。
本实施例的技术方案,既可以执行消息读取操作,也可以执行消息存储操作,对于消息读取操作和消息存储操作的顺序不作限定。
本实施例的技术方案,通过获取包含目标主题信息和待读取数据的目标长度的消息读取指令,依据目标主题信息,将与目标主题信息关联的消息队列中最新的目标长度个消息反馈给当前读写器。一个主题只维护一个消息队列,无需在多个算法模块中设置多个缓存列来缓存同一个主题的消息内容,降低了传输时延,提高了数据传输的效率,减少了内存空间的占用。通过确定所述最新读取位置的下一位置是否是从消息队列中读取的首个消息位置,能够确定是否存在消息读写异常,能够及时发现消息读写异常并进行进一步处理。
实施例四
本实施例提供一种主题消息处理装置,参见图4,该装置具体包括:
存储指令获取模块401,用于获取消息存储指令,其中所述消息存储指令中包括待存储的当前消息内容和所述当前消息内容所属的当前主题信息;
存储模块402,用于依据所述当前主题信息,将所述当前消息内容存储到公共数据缓存区中当前主题关联的消息队列中。
进一步的,所述装置还包括:
尾部索引更新模块,用于控制调整当前消息队列的尾部索引取值,得到新尾部索引取值;
头部索引更新模块,用于若所述新尾部索引取值指向的队列位置与当前消息队列的头部索引取值指向的队列位置相同,则控制调整头部索引取值,得到新头部索引取值。
进一步的,所述装置还包括:
读取指令获取模块403,用于获取当前读写器的消息读取指令,其中所述消息读取指令包括目标主题信息和待读取数据的目标长度;
反馈模块404,用于将所述目标主题信息关联的消息队列中最新的目标长度个消息反馈给当前读写器。
可选的,所述消息读取指令中还包括当前读写器的最新读取位置;
相应地,所述装置还包括:
异常判断模块,用于若确定最新读取位置的下一位置不是从消息队列中读取的首个消息位置,则确定存在消息读写异常。
本实施例的技术方案,通过存储指令获取模块获取包含待存储的当前消息内容和当前消息内容所述的当前主题信息的消息存储指令,存储模块依据当前主题信息,将当前消息内容存储到公共数据缓存区中当前主题关联的消息队列中,实现了消息内容的存储过程;通过读取指令获取模块获取包含目标主题信息和待读取数据的目标长度的消息读取指令,反馈模块依据目标主题信息,将与目标主题信息关联的消息队列中最新的目标长度个消息反馈给当前读写器,实现了消息内容的读取过程。本实施例提供的技术方案,一个主题只维护一个消息队列,无需在多个算法模块中设置多个缓存列来缓存同一个主题的消息内容,降低了传输时延,提高了数据传输的效率,减少了内存空间的占用。
实施例五
图5是本发明实施例五提供的一种主题消息处理设备的结构图。图5示出了适于用来实现本发明实施方式的示例性处理设备512的框图。图5显示的处理设备512仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图5所示,处理设备512以通用计算设备的形式表现。处理设备512的组件可以包括但不限于:一个或者多个处理器或者处理单元516,系统存储器528,连接不同系统组件(包括系统存储器528和处理单元516)的总线518。
总线518表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(ISA)总线,微通道体系结构(MAC)总线,增强型ISA总线、视频电子标准协会(VESA)局域总线以及外围组件互连(PCI)总线。
处理设备512典型地包括多种计算机系统可读介质。这些介质可以是任何能够被处理设备512访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。
系统存储器528可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(RAM)530和/或高速缓存存储器532。处理设备512可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统534可以用于读写不可移动的、非易失性磁介质(图5未显示,通常称为“硬盘驱动器”)。尽管图5中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如CD-ROM,DVD-ROM或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线518相连。存储器528可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本发明各实施例的功能。
具有一组(至少一个)程序模块542的程序/实用工具540,可以存储在例如存储器528中,这样的程序模块542包括但不限于操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块542通常执行本发明所描述的实施例中的功能和/或方法。
处理设备512也可以与一个或多个外部设备514(例如键盘、指向设备、显示器524等)通信,还可与一个或者多个使得用户能与该处理设备512交互的设备通信,和/或与使得该处理设备512能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口522进行。并且,处理设备512还可以通过网络适配器520与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器520通过总线518与处理设备512的其它模块通信。应当明白,尽管图中未示出,可以结合处理设备512使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
处理单元516通过运行存储在系统存储器528中的多个程序中其他程序的至少一个,从而执行各种功能应用以及数据处理,例如实现本发明实施例所提供的一种区块链中的元素处理主题消息处理方法。
实施例六
本发明实施例六还提供了一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行一种主题消息处理方法。
本发明实施例的计算机存储介质,可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于无线、电线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如”C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。
Claims (7)
1.一种主题消息处理方法,其特征在于,包括:
获取消息存储指令,其中所述消息存储指令中包括待存储的当前消息内容和所述当前消息内容所属的当前主题信息;
依据所述当前主题信息,将所述当前消息内容存储到公共数据缓存区中当前主题关联的消息队列中;
获取当前读写器的消息读取指令,其中所述消息读取指令包括目标主题信息和待读取数据的目标长度;其中,每个算法模块中包含一个读写器,用于读取当前算法模块所需要的数据,所述待读取数据的目标长度为当前算法模块所需的待读取数据的个数,不同的算法模块和同一算法模块的不同时刻,待读取数据的目标长度相同或不同;
将所述目标主题信息关联的消息队列中最新的目标长度个消息反馈给当前读写器;
其中,所述消息读取指令中还包括当前读写器的最新读取位置;所述方法还包括:若确定所述最新读取位置的下一位置不是从消息队列中读取的首个消息位置,则确定存在消息读写异常。
2.根据权利要求1所述的方法,其特征在于,所述消息队列是定长的循环队列。
3.根据权利要求1所述的方法,其特征在于,将所述消息内容存储到公共数据缓存区中当前主题关联的消息队列中之后,还包括:
控制调整当前消息队列的尾部索引取值,得到新尾部索引取值;
若所述新尾部索引取值指向的队列位置与当前消息队列的头部索引取值指向的队列位置相同,则控制调整头部索引取值,得到新头部索引取值。
4.一种主题消息处理装置,其特征在于,包括:
存储指令获取模块,用于获取消息存储指令,其中所述消息存储指令中包括待存储的当前消息内容和所述当前消息内容所属的当前主题信息;
存储模块,用于依据所述当前主题信息,将所述当前消息内容存储到公共数据缓存区中当前主题关联的消息队列中;
读取指令获取模块,用于获取当前读写器的消息读取指令,其中所述消息读取指令包括目标主题信息和待读取数据的目标长度;其中,每个算法模块中包含一个读写器,用于读取当前算法模块所需要的数据,所述待读取数据的目标长度为当前算法模块所需的待读取数据的个数,不同的算法模块和同一算法模块的不同时刻,待读取数据的目标长度相同或不同;
反馈模块,用于将所述目标主题信息关联的消息队列中最新的目标长度个消息反馈给当前读写器;
其中,所述消息读取指令中还包括当前读写器的最新读取位置;相应地,所述装置还包括:
异常判断模块,用于若确定最新读取位置的下一位置不是从消息队列中读取的首个消息位置,则确定存在消息读写异常。
5.根据权利要求4所述的装置,其特征在于,所述装置还包括:
尾部索引更新模块,用于控制调整当前消息队列的尾部索引取值,得到新尾部索引取值;
头部索引更新模块,用于若所述新尾部索引取值指向的队列位置与当前消息队列的头部索引取值指向的队列位置相同,则控制调整头部索引取值,得到新头部索引取值。
6.一种电子设备,其特征在于,所述设备包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-3中任一所述的主题消息处理方法。
7.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-3中任一所述的主题消息处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810982356.8A CN109032821B (zh) | 2018-08-27 | 2018-08-27 | 自动驾驶主题消息处理方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810982356.8A CN109032821B (zh) | 2018-08-27 | 2018-08-27 | 自动驾驶主题消息处理方法、装置、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109032821A CN109032821A (zh) | 2018-12-18 |
CN109032821B true CN109032821B (zh) | 2021-12-28 |
Family
ID=64624654
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810982356.8A Active CN109032821B (zh) | 2018-08-27 | 2018-08-27 | 自动驾驶主题消息处理方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109032821B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111475309A (zh) * | 2019-01-24 | 2020-07-31 | 北京京东尚科信息技术有限公司 | 一种数据处理方法、装置、区块链服务系统及存储介质 |
CN113239307A (zh) * | 2021-05-17 | 2021-08-10 | 北京百度网讯科技有限公司 | 用于存储消息主题的方法及装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101763289A (zh) * | 2009-09-25 | 2010-06-30 | 中国人民解放军国防科学技术大学 | 一种基于共享内存的消息传递方法 |
CN103827829A (zh) * | 2011-09-30 | 2014-05-28 | 甲骨文国际公司 | 在中间件机器环境中提供和管理用于多节点应用的消息队列的系统及方法 |
CN107025142A (zh) * | 2016-01-29 | 2017-08-08 | 华为技术有限公司 | 一种线程间消息传递方法、装置及电子设备 |
CN107197015A (zh) * | 2017-05-23 | 2017-09-22 | 阿里巴巴集团控股有限公司 | 一种基于消息队列系统的消息处理方法和装置 |
CN108021358A (zh) * | 2017-12-15 | 2018-05-11 | 无线生活(杭州)信息科技有限公司 | 一种数据处理方法及装置 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102457442A (zh) * | 2010-10-29 | 2012-05-16 | 金蝶软件(中国)有限公司 | 一种消息发送和读取方法、装置及中间件系统 |
US9544356B2 (en) * | 2014-01-14 | 2017-01-10 | International Business Machines Corporation | Message switch file sharing |
-
2018
- 2018-08-27 CN CN201810982356.8A patent/CN109032821B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101763289A (zh) * | 2009-09-25 | 2010-06-30 | 中国人民解放军国防科学技术大学 | 一种基于共享内存的消息传递方法 |
CN103827829A (zh) * | 2011-09-30 | 2014-05-28 | 甲骨文国际公司 | 在中间件机器环境中提供和管理用于多节点应用的消息队列的系统及方法 |
CN107025142A (zh) * | 2016-01-29 | 2017-08-08 | 华为技术有限公司 | 一种线程间消息传递方法、装置及电子设备 |
CN107197015A (zh) * | 2017-05-23 | 2017-09-22 | 阿里巴巴集团控股有限公司 | 一种基于消息队列系统的消息处理方法和装置 |
CN108021358A (zh) * | 2017-12-15 | 2018-05-11 | 无线生活(杭州)信息科技有限公司 | 一种数据处理方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN109032821A (zh) | 2018-12-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9967222B2 (en) | Method and device for managing shared memory in robot operating system | |
US11294714B2 (en) | Method and apparatus for scheduling task, device and medium | |
CN109144696B (zh) | 一种任务调度方法、装置、电子设备及存储介质 | |
US8607003B2 (en) | Memory access to a dual in-line memory module form factor flash memory | |
CN109194736B (zh) | 消息去重方法、装置、电子设备、介质和无人车 | |
US8352946B2 (en) | Managing migration ready queue associated with each processor based on the migration ready status of the tasks | |
CN109284180B (zh) | 一种任务调度方法、装置、电子设备及存储介质 | |
CN102460405A (zh) | 用于通过存储器装置来控制主机存储器存取的方法及系统 | |
US10310996B2 (en) | Hardware queue manager with water marking | |
CN109032821B (zh) | 自动驾驶主题消息处理方法、装置、设备及存储介质 | |
CN109669787B (zh) | 数据传输方法及装置、存储介质、电子设备 | |
CN107817962B (zh) | 一种远程控制方法、装置、控制服务器及存储介质 | |
EP4246965A2 (en) | Method and device, equipment, and storage medium for data processing | |
CN109347899B (zh) | 在分布式存储系统中写入日志数据的方法 | |
KR102454695B1 (ko) | 캐시 장치, 캐시, 시스템, 데이터 처리 방법, 장치 및 매체 | |
CN110515749B (zh) | 信息发送的队列调度的方法、装置、服务器和存储介质 | |
US9965344B2 (en) | Method and apparatus for transmitting data in a robot operating system | |
CN114036085A (zh) | 基于ddr4的多任务读写调度方法、计算机设备及存储介质 | |
CN109309583B (zh) | 基于分布式系统的信息获取方法、装置、电子设备和介质 | |
CN112364268A (zh) | 资源获取方法、装置、电子设备及存储介质 | |
CN111858579A (zh) | 数据存储方法及装置 | |
US20100088424A1 (en) | Efficient Buffer Utilization in a Computer Network-Based Messaging System | |
US11704361B2 (en) | Method, apparatus and storage medium for implementing a discrete frame-based scene section | |
CN112087474B (zh) | 一种基于集群的端口信息的获取方法及装置 | |
US9223728B2 (en) | Servicing a globally broadcast interrupt signal in a multi-threaded computer |
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 | ||
GR01 | Patent grant |