CN118174980A - 一种报文处理方法、装置、电子设备、存储介质及车辆 - Google Patents
一种报文处理方法、装置、电子设备、存储介质及车辆 Download PDFInfo
- Publication number
- CN118174980A CN118174980A CN202211574992.XA CN202211574992A CN118174980A CN 118174980 A CN118174980 A CN 118174980A CN 202211574992 A CN202211574992 A CN 202211574992A CN 118174980 A CN118174980 A CN 118174980A
- Authority
- CN
- China
- Prior art keywords
- space
- buffer queue
- available
- identifier
- position identifier
- 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
- 238000003672 processing method Methods 0.000 title claims abstract description 18
- 238000000034 method Methods 0.000 claims abstract description 49
- 230000006854 communication Effects 0.000 claims abstract description 24
- 238000004891 communication Methods 0.000 claims abstract description 21
- 238000004590 computer program Methods 0.000 claims description 19
- 230000008569 process Effects 0.000 description 17
- 230000007717 exclusion Effects 0.000 description 15
- 238000010586 diagram Methods 0.000 description 10
- 230000000694 effects Effects 0.000 description 5
- 230000004044 response Effects 0.000 description 5
- 230000009471 action Effects 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Landscapes
- Computer And Data Communications (AREA)
Abstract
本公开涉及一种报文处理方法、装置、电子设备、存储介质及车辆,涉及控制器域网通信技术领域,其中该方法包括:响应于报文读写指令,获取缓冲队列的入列位置标识、出列位置标识,以及最大可读位置标识,报文读写指令指示针对缓冲队列执行写入或读取报文数据的操作;比较入列位置标识、出列位置标识以及最大可读位置标识,以得到缓冲队列的空间占用情况,空间占用情况包括:空间全部可用,空间部分可用,空间无剩余可用;在缓冲队列的空间占用情况为目标情况时,针对目标位置标识所指示的位置执行写入或读取报文数据的操作。采用本公开所提供的方案,可以提升CAN通信效率和性能。
Description
技术领域
本公开涉及控制器域网通信技术领域,具体涉及一种报文处理方法、装置、电子设备、存储介质及车辆。
背景技术
车辆通过控制器域网(Controller Area Network,CAN)实现控制***和各个组件之间的通信交互。在实际使用车辆的过程中,CAN通信所处理的数据量较大,通常利用缓冲队列对CAN通信过程中数据进行缓冲处理,防止数据丢失。目前在CAN通信过程中主要采用互斥锁的方式,以线程A和线程B为例,若线程A成功获取互斥锁对缓冲队列进行访问,则线程B不会成功获取到互斥锁,需要重新进入缓冲队列等待线程A释放互斥锁,这会导致缓冲队列阻塞,影响CAN通信的性能。
发明内容
为了解决上述技术问题或者至少部分地解决上述技术问题,本公开提供了一种报文处理方法、装置、电子设备、存储介质及车辆,突破了互斥锁的限制,提升了CAN通信效率和性能。
为了实现上述目的,本公开实施例提供的技术方案如下:
第一方面,本公开提供一种报文处理方法,该方法包括:
响应于报文读写指令,获取缓冲队列的入列位置标识、出列位置标识,以及最大可读位置标识,报文读写指令指示针对缓冲队列执行写入或读取报文数据的操作;
比较入列位置标识、出列位置标识以及最大可读位置标识,以得到缓冲队列的空间占用情况,空间占用情况包括:空间全部可用,空间部分可用,空间无剩余可用;
在缓冲队列的空间占用情况为目标情况时,针对目标位置标识所指示的位置执行写入或读取报文数据的操作;
其中,当报文读写指令指示针对缓冲队列执行写入报文数据的操作,目标情况为空间全部可用或空间部分可用时,目标位置标识为入列位置标识;或者,当报文读写指令指示针对缓冲队列执行读取报文数据的操作,目标情况为空间部分可用或空间无剩余可用时,目标位置标识为出列位置标识。
作为本公开实施例一种可选的实施方式,比较入列位置标识、出列位置标识以及最大可读位置标识,以得到缓冲队列的空间占用情况,包括:
若出列位置标识等于最大可读位置标识,则确定缓冲队列的空间占用情况为空间全部可用空;
若出列位置标识不等于最大可读位置标识,且入列位置标识加一等于出列位置标识,则确定缓冲队列的空间占用情况为空间无剩余可用;
若出列位置标识不等于最大可读位置标识,且入列位置标识加一不等于出列位置标识,则确定缓冲队列的空间占用情况为空间部分可用。
作为本公开实施例一种可选的实施方式,当报文读写指令指示针对缓冲队列执行读取报文数据的操作,目标情况为空间部分可用或空间无剩余可用时,目标位置标识为出列位置标识;
在缓冲队列的空间占用情况为目标情况时,针对目标位置标识所指示的位置执行写入或读取报文数据的操作,包括:
在缓冲队列的空间占用情况为空间部分可用或空间无剩余可用时,对入列位置标识和最大可读位置标识进行比较;
若入列位置标识等于最大可读位置标识,则从出列位置标识所指示的出列位置读取报文数据。
作为本公开实施例一种可选的实施方式,在缓冲队列的空间占用情况为空间部分可用或空间无剩余可用时,对入列位置标识和最大可读位置标识进行比较之后,方法还包括:
若入列位置标识不等于最大可读位置标识,则确定入列位置标识所指示的入列位置等待写入报文数据,或正在写入报文数据;
在报文数据写入入列位置之后,从出列位置标识所指示的出列位置读取报文数据。
作为本公开实施例一种可选的实施方式,当报文读写指令指示针对缓冲队列执行写入报文数据的操作,目标情况为空间全部可用或空间部分可用时,目标位置标识为入列位置标识;
在缓冲队列的空间占用情况为目标情况时,针对目标位置标识所指示的位置执行写入或读取报文数据的操作之后,方法还包括:
对最大可读位置标识加一,以更新最大可读位置标识。
作为本公开实施例一种可选的实施方式,当报文读写指令指示针对缓冲队列执行读取报文数据的操作,目标情况为空间部分可用或空间无剩余可用时,目标位置标识为出列位置标识;
在缓冲队列的空间占用情况为目标情况时,针对目标位置标识所指示的位置执行写入或读取报文数据的操作之后,方法还包括:
将报文数据发送至总线上,以利用缓冲队列进行总线通信。
第二方面,本公开提供一种报文处理装置,该装置包括:
获取模块,用于响应于报文读写指令,获取缓冲队列的入列位置标识、出列位置标识,以及最大可读位置标识,报文读写指令指示针对缓冲队列执行写入或读取报文数据的操作;
比较模块,用于比较入列位置标识、出列位置标识以及最大可读位置标识,以得到缓冲队列的空间占用情况,空间占用情况包括:空间全部可用,空间部分可用,空间无剩余可用;
读写模块,用于在缓冲队列的空间占用情况为目标情况时,针对目标位置标识所指示的位置执行写入或读取报文数据的操作;
其中,当报文读写指令指示针对缓冲队列执行写入报文数据的操作,目标情况为空间全部可用或空间部分可用时,目标位置标识为入列位置标识;或者,当报文读写指令指示针对缓冲队列执行读取报文数据的操作,目标情况为空间部分可用或空间无剩余可用时,目标位置标识为出列位置标识。
作为本公开实施例一种可选的实施方式,比较模块,具体用于若出列位置标识等于最大可读位置标识,则确定缓冲队列的空间占用情况为空间全部可用空;
若出列位置标识不等于最大可读位置标识,且入列位置标识加一等于出列位置标识,则确定缓冲队列的空间占用情况为空间无剩余可用;
若出列位置标识不等于最大可读位置标识,且入列位置标识加一不等于出列位置标识,则确定缓冲队列的空间占用情况为空间部分可用。
作为本公开实施例一种可选的实施方式,当报文读写指令指示针对缓冲队列执行读取报文数据的操作,目标情况为空间部分可用或空间无剩余可用时,目标位置标识为出列位置标识;
读写模块,具体用于在缓冲队列的空间占用情况为空间部分可用或空间无剩余可用时,对入列位置标识和最大可读位置标识进行比较;
若入列位置标识等于最大可读位置标识,则从出列位置标识所指示的出列位置读取报文数据。
作为本公开实施例一种可选的实施方式,读写模块,在缓冲队列的空间占用情况为空间部分可用或空间无剩余可用时,对入列位置标识和最大可读位置标识进行比较之后,还用于若入列位置标识不等于最大可读位置标识,则确定入列位置标识所指示的入列位置等待写入报文数据,或正在写入报文数据;
在报文数据写入入列位置之后,从出列位置标识所指示的出列位置读取报文数据。
作为本公开实施例一种可选的实施方式,当报文读写指令指示针对缓冲队列执行写入报文数据的操作,目标情况为空间全部可用或空间部分可用时,目标位置标识为入列位置标识;
读写模块,在缓冲队列的空间占用情况为目标情况时,针对目标位置标识所指示的位置执行写入或读取报文数据的操作之后,还用于对最大可读位置标识加一,以更新最大可读位置标识。
作为本公开实施例一种可选的实施方式,当报文读写指令指示针对缓冲队列执行读取报文数据的操作,目标情况为空间部分可用或空间无剩余可用时,目标位置标识为出列位置标识;
读写模块,在缓冲队列的空间占用情况为目标情况时,针对目标位置标识所指示的位置执行写入或读取报文数据的操作之后,还用于将报文数据发送至总线上,以利用缓冲队列进行总线通信。
第三方面,本公开提供一种电子设备,该电子设备包括:处理器、存储器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如第一方面或其任意一种可选的实施方式所述的报文处理方法。
第四方面,本公开提供一种计算机可读存储介质,包括:所述计算机可读存储介质上存储计算机程序,所述计算机程序实现如第一方面或其任意一种可选的实施方式所述的报文处理方法。
第五方面,本公开提供一种车辆,包括如第二方面或其任意一种可选的实施方式所述的报文处理装置;或者,如第三方面所述的电子设备。
第六方面,本公开提供一种计算机程序产品,包括:该计算机程序产品包括计算机程序,当所述计算机程序在计算机上运行时,实现如第一方面或其任意一种可选的实施方式所述的报文处理方法。
本公开实施例提供的技术方案与现有技术相比具有如下优点:
本公开提供的一种报文处理方法,响应于报文读写指令,获取缓冲队列中的入列位置标识、出列位置标识,以及最大可读位置标识,通过对入列位置标识、出列位置标识,以及最大可读位置标识的比较,确定缓冲队列的空间占用情况,并结合报文读写指令的指示,在报文读写指令指示向缓冲队列写入报文数据,且缓冲队列的空间占用情况为存在剩余可用空间的情况下,向入列位置标识所指示的入列位置写入报文数据;在报文读写指令指示从缓冲队列中读取报文数据,且缓冲队列的空间占用情况为存在剩余可用空间或无剩余可用空间的情况下,从出列位置标识所指示的出列位置读取报文数据。突破了互斥锁的限制,通过缓冲队列中的入列位置标识、出列位置标识,以及最大可读位置标识对缓冲队列是否可读或可写进行判断,从而在入列位置标识所指示的位置写入报文数据,或,从出列位置所指示的位置读取报文数据,提升了CAN通信效率和性能。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。
为了更清楚地说明本公开实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本公开实施例提供的一种报文处理方法的流程示意图;
图2为本公开实施例中缓冲队列的数据结构示意图;
图3为本公开实施例提供的一种报文处理装置的结构示意图;
图4为本公开实施例提供的一种电子设备的结构示意图。
具体实施方式
为了能够更清楚地理解本公开的上述目的、特征和优点,下面将对本公开的方案进行进一步描述。需要说明的是,在不冲突的情况下,本公开的实施例及实施例中的特征可以相互组合。
在下面的描述中阐述了很多具体细节以便于充分理解本公开,但本公开还可以采用其他不同于在此描述的方式来实施;显然,说明书中的实施例只是本公开的一部分实施例,而不是全部的实施例。
为了更清楚地说明本公开实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的技术名词作简单地介绍:
互斥锁,在编程中,引入了对象互斥锁的概念,来保证共享数据操作的完整性。每个对象都对应于一个可称为"互斥锁"的标记,这个标记用来保证在任一时刻,只能有一个线程访问该对象。互斥锁用保证共享资源在任一时间只有一个线程访问,当已经有一个线程加锁后,其他线程加锁就会失败。互斥锁加锁失败线程阻塞是由操作***内核实现的。当加锁失败时,内核会将线程置位睡眠状态,等到锁被释放后,内核会在合适的时机唤醒线程,当这个线程获取到锁后就可以继续执行下去。所以互斥锁加锁失败时,会从用户态陷入到内核态,让内核切换线程,存在两次线程上下文切换的成本。
上下文切换,是指操作***的内核层在中央处理器上对进程进行以下活动:(1)挂起一个进程,将该进程在CPU中的上下文存储于内存中;(2)在内存中检索下一个进程的上下文并将其在CPU的寄存器中恢复;(3)跳转至程序计数器所指向的位置,以恢复该进程。可以理解为,上下文切换是内核挂起CPU当前执行的进程,然后继续执行之前挂起的众多进程中的某一个。上下文频繁切换会对***性能造成过多损耗。
比较并交换(compare and swap,CAS),是原子操作的一种,用于在多线程编程中实现不被打断的数据交换操作,从而避免多线程同时改写某一数据时由于执行顺序不确定性以及中断的不可预知性产生的数据不一致问题。该操作通过将内存中的值与指定数据进行比较,当数值一样时将内存中的数据替换为新的值。CAS操作包含三个操作数——内存位置(V)、预期原值(A)和新值(B)。如果内存位置的值与预期原值相匹配,那么处理器会自动将该位置值更新为新值。否则,处理器不做任何操作。
相关技术中,利用缓冲队列加互斥锁的方式对CAN通信过程中的数据进行缓冲处理,具体的,若需要向缓冲队列中写入数据,则首先调用线程获取互斥锁,并判断是否获取成功;在获取成功的情况下可将数据写入缓冲队列,进而释放该互斥锁,在未成功获取互斥锁的情况下,当前线程重新进入缓冲队列等待成功获取互斥锁之后被重新调度。车辆实际的CAN通信中传输的数据量大,一旦未成功获取互斥锁,就需要重新进入缓冲队列进行等待,这会导致缓冲队列阻塞,引起线程上下文频繁切换,造成性能损耗,影响CAN通信的通信效率。
为解决上述技术问题,本公开实施例提供一种实施报文处理方法、装置、电子设备、存储介质及车辆,其中报文处理方法首先响应于报文读写指令,获取缓冲队列的入列位置标识、出列位置标识以及最大可读位置标识,其中该报文读写指令可以指示向缓冲队列中写入报文数据,或者,指示从缓冲队列中读取报文数据,然后对入列位置标识、出列位置标识和最大可读位置标识进行比较,以确定出缓冲队列的空间占用情况是空,还是存在剩余可用空间,又或者是无剩余可用空间,实现对缓冲队列的空间占用情况进行判断,以确定缓冲队列是否可读或可写。进而在报文读写指令指示向缓冲队列写入报文数据,且缓冲队列的空间占用情况为存在剩余可用空间的情况下,向入列位置标识所指示的入列位置写入报文数据;在报文读写指令指示从缓冲队列读取报文数据,且缓冲队列的空间占用情况为存在剩余可用空间或无剩余可用空间的情况下,从出列位置标识所指示的出列位置读取报文数据。能够满足CAN通信较大的数据吞吐量,减少性能损耗,提升CAN通信的通信效率。
需要说明的是,本公开实施例所述的一种报文处理方法,其保护范围不限于本实施例列举的步骤执行顺序,凡是根据本公开的原理所做的现有技术的步骤增减、步骤替换所实现的方案都包括在本公开的保护范围内。
如图1所示,图1为本公开实施例提供的一种报文处理方法的流程示意图,该方法可应用于车辆控制***的中央处理器,本公开对此不做具体限定。该报文处理方法包括如下步骤S101~S103:
S101、响应于报文读写指令,获取缓冲队列的入列位置标识、出列位置标识,以及最大可读位置标识。
其中,该报文读写指令是中央处理器生成的,用于针对缓冲队列执行写入或读取报文数据的操作。该报文读写指令用于指示向缓冲队列写入报文数据,或者,用于指示从缓冲队列读取报文数据。报文读写指令具体用于指示读或写,可根据报文读写指令中的标志位进行区分。例如,标志位置1,则报文读写指令用于指示向缓冲队列写入报文数据;标志位置0,则报文读写指令用于指示从缓冲队列读取报文数据。
报文数据根据车辆控制***的实际工作生成,例如工作日志等,本公开对此不做限定。
一些实施例中,响应于报文读写指令,表示期望对缓冲队列执行写入或读取报文数据的操作,本公开实施例获取内存的缓冲队列的入列位置标识、出列位置标识以及最大可读位置标识,其中,入列位置标识用于标识新的报文数据写入缓冲队列时,利用数组存放该报文数据的数组位置下标,可记为writeIndex;出列位置标识用于标识缓冲队列中下一个被读取的报文数据的数组位置下标,可记为readIndex;最大可读位置标识用于标识缓冲队列中可读报文数据的最大数组位置下标值加一,可记为maximumReadIndex。
示例性的,如图2所示,图2为本公开实施例中缓冲队列的数据结构示意图,响应于报文读写指令,读取缓冲队列的下标,以获取入列位置标识、出列位置标识和最大可读位置标识,图中数组201、204、205未存放报文数据,数组202和数组203已经存放报文数据,其中出列位置标识指向数组202,表示该缓冲队列的下一个被读取的报文数据为数组202中存放的报文数据;入列位置标识指向数组204,表示新的报文数据将被写入数组204;最大可读位置标识指向数组205,表示该缓冲队列当前可读报文数据的最大数组为数组204。
进一步的,执行S102。以判断该缓冲队列的空间占用情况,确定是否执行读或写操作。
S102、比较入列位置标识、出列位置标识以及最大可读位置标识,以得到缓冲队列的空间占用情况。
其中,空间占用情况包括:空间全部可用,空间部分可用,空间无剩余可用。空间全部可用表示缓冲队列中各个数组均未存放报文数据;空间占用情况为空间部分可用,表示缓冲队列中存在可执行写操作的数组,空间占用情况为空间无剩余可用,表示缓冲队列中各个数组中均存放报文数据,缓冲队列已满。
一些实施例中,在获取缓冲队列的入列位置标识、出列位置标识以及最大可读位置标识之后,可直接根据上述三个位置标识对缓冲队列的空间占用情况进行判断,若出列位置标识等于最大可读位置标识,则确定缓冲队列的空间占用情况为空间全部可用;若出列位置标识不等于最大可读位置标识,且入列位置标识加一等于出列位置标识,则确定缓冲队列的空间占用情况为空间无剩余可用;若出列位置标识不等于最大可读位置标识,且入列位置标识加一不等于出列位置标识,则确定缓冲队列的空间占用情况为空间部分可用。
一些实施例中,在报文读写指令指示向缓冲队列写入报文数据的情况下,需要判断缓冲队列是否可写入报文数据,可选的,本公开实施例提供一种实施方式,比较出列位置标识是否等于最大可读位置标识,若出列位置标识等于最大可读位置标识,则确定缓冲队列的空间占用情况为空间全部可用,进而确定该缓冲队列可写入报文数据;若出列位置标识不等于最大可读位置标识,进一步判断入列位置标识加一是否等于出列位置标识,若入列位置标识加一不等于出列位置标识,则确定缓冲队列的空间占用情况为空间部分可用,可确定该缓冲队列能够写入报文数据。
一些实施例中,在报文读写指令指示从缓冲队列中读取报文数据的情况下,需要判断缓冲队列是否存在报文数据,可选的,本公开实施例提供一种实施方式,比较出列位置标识是否等于最大可读位置标识,若出列位置标识不等于最大可读位置标识,则确定缓冲队列的空间占用情况为空间部分可用或空间无剩余可用,可以理解的是,该缓冲队列中存在数组存放有报文数据,可读。
S103、在缓冲队列的空间占用情况为目标情况时,针对目标位置标识所指示的位置执行写入或读取报文数据的操作。
其中,根据报文读写指令的不同、目标情况的不同,对应有不同的目标位置标识。在报文读写指令指示针对缓冲队列执行写入报文数据的操作,目标情况为空间全部可用或空间部分可用时,目标位置标识为入列位置标识;在报文读写指令指示针对缓冲队列执行读取报文数据的操作,目标情况为空间部分可用或空间无剩余可用,目标位置标识为出列位置标识。
以下将根据目标位置标识的不同,分别描述向缓冲队列写入报文数据的过程,以及从缓冲队列中读取报文数据的过程:
(1)目标位置标识为入列位置标识
一些实施例中,在报文读写指令指示向缓冲队列写入报文数据,且缓冲队列的空间占用情况为空或存在剩余可用空间的情况下,表示该缓冲队列中存在未存放报文数据的数组,可执行写操作,目标位置标识为入列位置标识,向入列位置标识所指示的入列位置写入报文数据。
可选的,向入列位置标识所指示的入列位置写入报文数据之后,将缓冲队列的最大可读位置标识进行更新,新的最大可读位置标识等于入列位置标识加一。
需要说明的是,若报文读写指令指示向缓冲队列写入报文数据,但是缓冲队列的空间占用情况为无剩余可用空间,则重新获取新的入列位置标识,并根据新的入列位置标识与出列位置标识、最大可读位置标识进行比较,判断是否可以向新的入列位置标识所指示的入列位置写入报文数据,在此过程中,线程并不会触发上下文切换。
(2)目标位置标识为出列位置标识
一些实施例中,在报文读写指令指示从缓冲队列中读取报文数据,且缓冲队列的空间占用情况为存在剩余可用空间或无剩余可用空间的情况下,表示该缓冲队列中存在数组已经存放报文数据,可执行读操作,目标位置标识为出列位置标识,从出列位置标识所指示的出列位置读取报文数据。
一些实施例中,在报文读写指令指示从缓冲队列中读取报文数据,且缓冲队列的空间占用情况为存在剩余可用空间或无剩余可用空间的情况下,防止多线程并行读写缓冲队列产生冲突,本公开实施例提供一种实施方式,在报文读写指令指示从缓冲队列中读取报文数据,且缓冲队列的空间占用情况为存在剩余可用空间或无剩余可用空间的情况下,比较入列位置标识和最大可读位置标识,判断入列位置标识是否等于最大可读位置标识。
若入列位置标识等于最大可读位置标识,表示当前无其他线程向该缓冲队列的入列位置标识所指示的入列位置写入报文数据,则允许当前线程从出列位置标识所指示的出列位置读取报文数据。
若入列位置标识不等于最大可读位置标识,表示当前存在其他线程正在向该缓冲队列的入列位置标识所指示的入列位置写入报文数据,或者表示当前存在其他线程已经申请入列位置标识所指示的入列位置,等待向该入列位置写入报文数据,可以理解的是,入列位置标识不等于最大可读位置标识,表示该缓冲队列当前正在存在未完全写入的报文数据,若当前线程需要从出列位置标识所指示的出列位置读取报文数据,则需要等待其他线程将报文数据完全写入该缓冲队列,以避免线程调度冲突,保持数据的一致性。在报文数据写入入列位置之后,确定从出列位置标识所指示的出列位置读取报文数据。
一些实施例中,在从出列位置标识所指示的出列位置读取报文数据之后,将该报文数据发送至总线上,以利用缓冲队列进行总线通信。
综上,本公开实施例提供一种报文处理方法,该方法首先响应于报文读写指令,获取缓冲队列中的入列位置标识、出列位置标识,以及最大可读位置标识,通过对入列位置标识、出列位置标识,以及最大可读位置标识的比较,确定缓冲队列的空间占用情况,并结合报文读写指令的指示,在报文读写指令指示向缓冲队列写入报文数据,且缓冲队列的空间占用情况为存在剩余可用空间的情况下,向入列位置标识所指示的入列位置写入报文数据;在报文读写指令指示从缓冲队列中读取报文数据,且缓冲队列的空间占用情况为存在剩余可用空间或无剩余可用空间的情况下,从出列位置标识所指示的出列位置读取报文数据。突破了互斥锁的限制,实现基于CAS机制,缓冲队列中的入列位置标识、出列位置标识,以及最大可读位置标识对缓冲队列是否可读或可写进行判断,从而在入列位置标识所指示的位置写入报文数据,或,从出列位置所指示的位置读取报文数据,提升了CAN通信效率,减少基于互斥锁进行CAN通信的***损耗。
如图3所示,图3为本公开实施例提供的一种报文处理装置的结构示意图,该报文处理装置包括:
获取模块301,用于响应于报文读写指令,获取缓冲队列的入列位置标识、出列位置标识,以及最大可读位置标识,报文读写指令指示针对缓冲队列执行写入或读取报文数据的操作;
比较模块302,用于比较入列位置标识、出列位置标识以及最大可读位置标识,以得到缓冲队列的空间占用情况,空间占用情况包括:空间全部可用,空间部分可用,空间无剩余可用;
读写模块303,用于在缓冲队列的空间占用情况为目标情况时,针对目标位置标识所指示的位置执行写入或读取报文数据的操作;
其中,报文读写指令指示针对缓冲队列执行写入报文数据的操作,目标情况为空间全部可用或空间部分可用,目标位置标识为入列位置标识;或者,报文读写指令指示针对缓冲队列执行读取报文数据的操作,目标情况为空间部分可用或空间无剩余可用,目标位置标识为出列位置标识。
一些实施例中,比较模块302,具体用于若出列位置标识等于最大可读位置标识,则确定缓冲队列的空间占用情况为空间全部可用空;
若出列位置标识不等于最大可读位置标识,且入列位置标识加一等于出列位置标识,则确定缓冲队列的空间占用情况为空间无剩余可用;
若出列位置标识不等于最大可读位置标识,且入列位置标识加一不等于出列位置标识,则确定缓冲队列的空间占用情况为空间部分可用。
一些实施例中,报文读写指令指示针对缓冲队列执行读取报文数据的操作,目标情况为空间部分可用或空间无剩余可用,目标位置标识为出列位置标识;
读写模块303,具体用于在缓冲队列的空间占用情况为空间部分可用或空间无剩余可用时,对入列位置标识和最大可读位置标识进行比较;
若入列位置标识等于最大可读位置标识,则从出列位置标识所指示的出列位置读取报文数据。
一些实施例中,读写模块303,在缓冲队列的空间占用情况为空间部分可用或空间无剩余可用时,对入列位置标识和最大可读位置标识进行比较之后,还用于若入列位置标识不等于最大可读位置标识,则确定入列位置标识所指示的入列位置等待写入报文数据,或正在写入报文数据;
在报文数据写入入列位置之后,从出列位置标识所指示的出列位置读取报文数据。
一些实施例中,报文读写指令指示针对缓冲队列执行写入报文数据的操作,目标情况为空间全部可用或空间部分可用,目标位置标识为入列位置标识;
读写模块303,在缓冲队列的空间占用情况为目标情况时,针对目标位置标识所指示的位置执行写入或读取报文数据的操作之后,还用于对最大可读位置标识加一,以更新最大可读位置标识。
一些实施例中,报文读写指令指示针对缓冲队列执行读取报文数据的操作,目标情况为空间部分可用或空间无剩余可用,目标位置标识为出列位置标识;
读写模块303,在缓冲队列的空间占用情况为目标情况时,针对目标位置标识所指示的位置执行写入或读取报文数据的操作之后,还用于将报文数据发送至总线上,以利用缓冲队列进行总线通信。
如图4所示,图4为本公开实施例提供的一种电子设备的结构示意图,该电子设备包括:处理器401、存储器402及存储在所述存储器402上并可在所述处理器401上运行的计算机程序,其中,所述计算机程序被所述处理器执行时实现如上述方法实施例中报文处理方法的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
本公开实施例提供一种计算机可读存储介质,该计算机可读存储介质上存储计算机程序,该计算机程序被上述如上述方法实施例中报文处理方法的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
其中,该计算机可读存储介质可以为只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等。
本公开实施例提供一种计算程序产品,该计算机程序产品存储有计算机程序,计算机程序被所述处理器执行,实现如上述方法实施例中报文处理方法的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
本公开实施例提供一种车辆,该车辆包括:如上述报文处理装置;或者,如上述一种电子设备。该车辆用于执行本公开任意实施例所提供上述方法实施例中报文处理方法的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
本领域技术人员应明白,本公开的实施例可提供为方法、***、或计算机程序产品。因此,本公开可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本公开可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质上实施的计算机程序产品的形式。
本公开所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其他的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本公开的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的***来实现,或者可以用专用硬件与计算机指令的组合来实现。
本公开中,处理器可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
本公开中,存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。存储器是计算机可读介质的示例。
本公开中,计算机可读介质包括永久性和非永久性、可移动和非可移动存储介质。存储介质可以由任何方法或技术来实现信息存储,信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。根据本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上仅是本公开的具体实施方式,使本领域技术人员能够理解或实现本公开。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本公开的精神或范围的情况下,在其它实施例中实现。因此,本公开将不会被限制于本文的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (10)
1.一种报文处理方法,其特征在于,包括:
响应于报文读写指令,获取缓冲队列的入列位置标识、出列位置标识,以及最大可读位置标识,所述报文读写指令指示针对所述缓冲队列执行写入或读取报文数据的操作;
比较所述入列位置标识、出列位置标识以及所述最大可读位置标识,以得到所述缓冲队列的空间占用情况,所述空间占用情况包括:空间全部可用,空间部分可用,空间无剩余可用;
在所述缓冲队列的空间占用情况为目标情况时,针对目标位置标识所指示的位置执行写入或读取报文数据的操作;
其中,当所述报文读写指令指示针对所述缓冲队列执行写入报文数据的操作,所述目标情况为空间全部可用或空间部分可用时,所述目标位置标识为入列位置标识;或者,当所述报文读写指令指示针对所述缓冲队列执行读取报文数据的操作,所述目标情况为空间部分可用或空间无剩余可用时,所述目标位置标识为出列位置标识。
2.根据权利要求1所述的方法,其特征在于,所述比较所述入列位置标识、出列位置标识以及所述最大可读位置标识,以得到所述缓冲队列的空间占用情况,包括:
若所述出列位置标识等于所述最大可读位置标识,则确定所述缓冲队列的空间占用情况为空间全部可用;
若所述出列位置标识不等于所述最大可读位置标识,且所述入列位置标识加一等于所述出列位置标识,则确定所述缓冲队列的空间占用情况为空间无剩余可用;
若所述出列位置标识不等于所述最大可读位置标识,且所述入列位置标识加一不等于所述出列位置标识,则确定所述缓冲队列的空间占用情况为空间部分可用。
3.根据权利要求1所述的方法,其特征在于,所述当所述报文读写指令指示针对所述缓冲队列执行读取报文数据的操作,所述目标情况为空间部分可用或空间无剩余可用时,所述目标位置标识为出列位置标识;
所述在所述缓冲队列的空间占用情况为目标情况时,针对目标位置标识所指示的位置执行写入或读取报文数据的操作,包括:
在所述缓冲队列的空间占用情况为空间部分可用或空间无剩余可用时,对所述入列位置标识和所述最大可读位置标识进行比较;
若所述入列位置标识等于所述最大可读位置标识,则从所述出列位置标识所指示的出列位置读取报文数据。
4.根据权利要求3所述的方法,其特征在于,所述在所述缓冲队列的空间占用情况为空间部分可用或空间无剩余可用时,对所述入列位置标识和所述最大可读位置标识进行比较之后,所述方法还包括:
若所述入列位置标识不等于所述最大可读位置标识,则确定所述入列位置标识所指示的入列位置等待写入报文数据,或正在写入报文数据;在所述入列位置标识等于所述最大可读位置标识,指示所述报文数据写入所述入列位置之后,从所述出列位置标识所指示的出列位置读取报文数据。
5.根据权利要求1所述的方法,其特征在于,当所述报文读写指令指示针对所述缓冲队列执行写入报文数据的操作,所述目标情况为空间全部可用或空间部分可用时,所述目标位置标识为入列位置标识;
所述在所述缓冲队列的空间占用情况为目标情况时,针对目标位置标识所指示的位置执行写入或读取报文数据的操作之后,所述方法还包括:
对所述最大可读位置标识加一,以更新所述最大可读位置标识。
6.根据权利要求1所述的方法,其特征在于,所述当所述报文读写指令指示针对所述缓冲队列执行读取报文数据的操作,所述目标情况为空间部分可用或空间无剩余可用时,所述目标位置标识为出列位置标识;
所述在所述缓冲队列的空间占用情况为目标情况时,针对目标位置标识所指示的位置执行写入或读取报文数据的操作之后,所述方法还包括:
将所述报文数据发送至总线上,以利用所述缓冲队列进行总线通信。
7.一种报文处理装置,其特征在于,包括:
获取模块,用于响应于报文读写指令,获取缓冲队列的入列位置标识、出列位置标识,以及最大可读位置标识,所述报文读写指令指示针对所述缓冲队列执行写入或读取报文数据的操作;
比较模块,用于比较所述入列位置标识、出列位置标识以及所述最大可读位置标识,以得到所述缓冲队列的空间占用情况,所述空间占用情况包括:空间全部可用,空间部分可用,空间无剩余可用;
读写模块,用于在所述缓冲队列的空间占用情况为目标情况时,针对目标位置标识所指示的位置执行写入或读取报文数据的操作;
其中,当所述报文读写指令指示针对所述缓冲队列执行写入报文数据的操作,所述目标情况为空间全部可用或空间部分可用时,所述目标位置标识为入列位置标识;或者,当所述报文读写指令指示针对所述缓冲队列执行读取报文数据的操作,所述目标情况为空间部分可用或空间无剩余可用时,所述目标位置标识为出列位置标识。
8.一种电子设备,其特征在于,包括:处理器、存储器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如权利要求1至6中任一项所述的报文处理方法。
9.一种计算机可读存储介质,其特征在于,包括:所述计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现如权利要求1至6中任一项所述的报文处理方法。
10.一种车辆,其特征在于,包括:
如权利要求7所述的一种报文处理装置,或者,如权利要求8所述的一种电子设备。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211574992.XA CN118174980A (zh) | 2022-12-08 | 2022-12-08 | 一种报文处理方法、装置、电子设备、存储介质及车辆 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211574992.XA CN118174980A (zh) | 2022-12-08 | 2022-12-08 | 一种报文处理方法、装置、电子设备、存储介质及车辆 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN118174980A true CN118174980A (zh) | 2024-06-11 |
Family
ID=91357402
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211574992.XA Pending CN118174980A (zh) | 2022-12-08 | 2022-12-08 | 一种报文处理方法、装置、电子设备、存储介质及车辆 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN118174980A (zh) |
-
2022
- 2022-12-08 CN CN202211574992.XA patent/CN118174980A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9798595B2 (en) | Transparent user mode scheduling on traditional threading systems | |
US9104425B2 (en) | Apparatus and method for handling exception events | |
US9396353B2 (en) | Data allocation among devices with different data rates | |
US9213562B2 (en) | Garbage collection safepoint system using non-blocking asynchronous I/O call to copy data when the garbage collection safepoint is not in progress or is completed | |
EP3462324B1 (en) | Pointers in a memory managed system | |
JPS5983249A (ja) | 待ち行列制御方法 | |
US10535368B1 (en) | Reader bias based locking technique enabling high read concurrency for read-mostly workloads | |
CN114265670B (zh) | 一种内存块整理方法、介质及计算设备 | |
US20160210248A1 (en) | Information processing system, method and medium | |
CN104685443A (zh) | 锁定引导数据用以更快引导 | |
CN114168271A (zh) | 一种任务调度方法、电子设备及存储介质 | |
WO2015039582A1 (zh) | 一种虚拟资源分配方法及装置 | |
JP4342554B2 (ja) | 低競合ロック | |
US7334229B1 (en) | Mutual exclusion at the record level with priority inheritance for embedded systems using one semaphore | |
US7281100B2 (en) | Data processing system and method | |
CN118174980A (zh) | 一种报文处理方法、装置、电子设备、存储介质及车辆 | |
CN109558249B (zh) | 一种并发操作的控制方法及装置 | |
US9135058B2 (en) | Method for managing tasks in a microprocessor or in a microprocessor assembly | |
CN110874273B (zh) | 一种数据处理方法及装置 | |
CN109614218B (zh) | 半导体器件 | |
CN113253925B (zh) | 一种读写性能优化方法及装置 | |
CN114675968A (zh) | 一种线程运行方法、***、装置及可读存储介质 | |
JP2007133604A (ja) | コンピュータシステム、動作状態判定プログラムおよび動作状態判定方法 | |
JP2010026575A (ja) | スケジューリング方法およびスケジューリング装置並びにマルチプロセッサシステム | |
KR101881038B1 (ko) | 비휘발성 메모리에 저장된 메모리 매핑 파일의 원자적 업데이트 방법 및 제어 장치 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination |