消息处理方法、电子设备及存储介质与流程
未命名
10-08
阅读:82
评论:0

1.本技术属于计算机技术领域,尤其涉及一种消息处理方法、电子设备及存储介质。
背景技术:
2.应用程序可以使用线程间通信机制来实现多线程之间的数据共享和交换。例如,当一个线程需要向另一个线程发送消息时,可以使用通信机制来实现线程之间的通信。
3.在相关的消息处理方案中,电子设备根据消息队列、管道、socket(套接字)、信号量以及共享内存等通信机制处理消息。由于上述通信机制需要大量的ipc(inter-processcommunication,线程间通信)资源,所以,如果ipc资源数量达到上限时,会导致通信效率低下。
技术实现要素:
4.本技术实施例提供了一种消息处理方法、电子设备及存储介质,以解决设备内线程之间的通信效率低下的问题。
5.本技术实施例第一方面提供了一种消息处理方法,包括:响应于生产线程对目标事件的消息写入指令,获取目标事件对应的计数器中的计数器数值;在计数器中写入了目标事件对应的更新数值之后,基于更新数值对计数器数值进行更新;响应于消费线程对计数器的消息读取指令,将计数器对应的计数器数值读取至消费线程,以使消费线程根据计数器对应的计数器数值确定发生目标事件。
6.本技术实施例提供的消息处理方法中,响应于生产线程对目标事件的消息写入指令,获取目标事件对应的计数器中的计数器数值,在计数器中写入了目标事件对应的更新数值之后,基于更新数值对计数器数值进行更新;响应于消费线程对计数器的消息读取指令,将计数器对应的计数器数值读取至消费线程,以使消费线程根据计数器对应的计数器数值确定发生目标事件。本技术实施例通过事件机制进行消息处理,无需像消息队列那样进行内核和用户空间之间的数据拷贝,且事件机制的数据传输是基于计数器实现的,无需对消息进行序列化和反序列化的操作,能够提高通信效率。
7.本技术实施例第二方面还提供了一种消息处理装置,包括:指令响应模块,用于响应于生产线程对目标事件的消息写入指令,获取目标事件对应的计数器中的计数器数值;数值更新模块,用于在计数器中写入了目标事件对应的更新数值之后,基于更新数值对计数器数值进行更新;事件确定模块,用于响应于消费线程对计数器的消息读取指令,将计数器对应的计数器数值读取至消费线程,以使消费线程根据计数器对应的计数器数值确定发生目标事件。
8.本技术实施例第三方面还提供一种电子设备,电子设备包括处理器,处理器用于执行存储器中存储的计算机程序时实现上述消息处理方法。
9.本技术实施例第四方面还提供一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现上述消息处理方法。
附图说明
10.为了更清楚地说明本技术实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
11.图1是本技术实施例提供的一种消息处理方法的应用场景图;
12.图2是本技术实施例提供的一种消息处理方法的流程图;
13.图3是本技术实施例提供的一种计数器数值的读取流程图;
14.图4是本技术实施例提供的目标事件的确定流程图;
15.图5是本技术实施例提供的映射关系的建立流程图;
16.图6是本技术实施例提供的消息处理装置的结构示意图;
17.图7是本技术实施例提供的电子设备的结构示意图。
具体实施方式
18.为了能够更清楚地理解本技术的上述目的、特征和优点,下面结合附图和具体实施例对本技术进行详细描述。需要说明的是,在不冲突的情况下,本技术的实施例及实施例中的特征可以相互组合。
19.在下面的描述中阐述了很多具体细节以便于充分理解本技术,所描述的实施例是本技术一部分实施例,而不是全部的实施例。
20.除非另有定义,本文所使用的所有的技术和科学术语与属于本技术的技术领域的技术人员通常理解的含义相同。本文中在本技术的说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本技术。
21.在家庭储能项目中,将家庭储能设备(例如,市电储能设备、风力发电储能设备以及光伏发电储能设备等)与智能家居(例如,空调、灯光、电视以及冰箱等)进行通信连接,通过对家庭储能设备的远程控制以实现对智能家居的用电管理,从而达到降低用电成本、提高用电效率的效果。在对上述家庭储能设备或智能家居做应用程序开发时,需要使用线程间通信机制来实现多线程之间的数据共享和交换。例如,家庭储能设备中包含多个功能模块(例如,电池模块、通信模块、监控模块以及显示模块等),每个模块存在相应的线程。以电池模块、通信模块与监控模块为例,电池模块存在相应的电池线程,通信模块存在相应的通信线程,监控模块存在相应的监控线程。其中,电池线程用于确定家庭储能设备的剩余电量、充电温度以及充电速度等储能信息,之后向通信线程发送上述储能信息;通信线程用于接收电池线程发送的储能信息,并将上述储能信息发送至监控线程;监控线程用于接收储能信息,并根据储能信息监控家庭储能设备的当前储能状态,以便后续各个智能家居根据当前储能状态及时规划各自的用电计划,以达到提高能源利用率、降低用电成本等效果。
22.本技术实施例提供的消息处理方法的应用场景广泛,除上述家庭储能的应用场景外,还可以包括移动直播、车联网、金融支付、智能餐饮以及即时聊天等应用场景,在此不做限制。
23.然而,在相关的消息处理方案中,电子设备根据消息队列、管道、socket、信号量以及共享内存等通信机制处理消息。以家庭储能项目为例,由于家庭储能设备包括多个模块,
每个模块对应不同的线程。当在某个线程中完成一个操作后,需要通知另外一个线程进行下一个操作。若选用消息队列、管道、socket、信号量以及共享内存等通信机制,由于家庭储能项目中的ipc(inter-process communication,线程间通信)资源是有限的,而上述通信机制需要大量的ipc(inter-process communication,线程间通信)资源,所以,如果ipc资源数量达到上限时,会导致家庭储能设备无法正常运行,从而导致通信效率低下。
24.为解决上述问题,本技术实施例提供一种消息处理方法,通过事件机制进行消息处理,能够提高通信效率。
25.结合图1说明本技术实施例提供的消息处理方法的应用场景图。如图1所示,第三方线程分别与生产线程以及消费线程通信连接。一方面,第三方线程用于接收生产线程发出的对目标事件的消息写入指令,并根据消息写入指令对目标事件对应的计数器数值进行更新,得到更新后的计数器数值;另一方面,第三方线程还用于接收消费线程发出的对计数器的消息读取指令,并根据消息读取指令将计数器中对应的计数器数值读取至消费线程,以使消费线程根据计数器数值确定发生的目标事件。第三方线程通过与上述生产线程以及消费线程间的通信处理,以实现上述消息处理方法。在一实施例中,第三方线程、生产线程以及消费线程均运行于电子设备中,由电子设备调用第三方线程响应生产线程与消费线程发出的相关指令,并通过对相关指令处理,以实现消息处理方法。其中,生产线程用于写入与事件相关的消息,消费线程用于读取生产线程中写入的相关事件,第三方线程可以是在电子设备内建立的区别于生产线程与消费线程的控制流。事件可以是在电子设备的操作系统中发生的某个行为,例如用户输入、网络连接、硬件故障等。事件可以被触发,然后由操作系统或应用程序对触发的事件进行处理,事件可以用于管理操作系统的各个方面,例如进程调度、内存管理、文件系统等。
26.图2是本技术实施例提供的消息处理方法的流程示意图,消息处理方法可应用于电子设备,进一步地,消息处理方法可应用于电子设备内的第三方线程。如图2所示,消息处理方法可以包括如下步骤,根据不同的需求,该流程图中步骤的顺序可以改变,某些可以省略。
27.s11,响应于生产线程对目标事件的消息写入指令,获取目标事件对应的计数器中的计数器数值。
28.在一些实施例中,为解决使用ipc资源的通信机制容易导致通信效率低下的问题,本技术实施例引入事件通信机制实现各个线程间的通信。事件可支持读取、写入、关闭以及开启等操作,且由于事件的本质并非文件,因此,事件通信机制的开启、关闭以及读写的效率较高。在一实施例中,对于每一事件,均存在对应的计数器。计数器可以是64位的,位是最小的存储单位,每一个位能够存储一个一位的二进制码。在其他实施例中,计数器还可以是32位的、128位的,在此不做限制。
29.在一些实施例中,以家庭储能项目为例,家庭储能项目还包括iot(internet of things,物联网)应用,iot应用用于对家庭储能设备与智能家居间的通信连接进行相关处理。在一实施例中,iot应用可以包括wi-fi通信模块、鉴权模块以及mqtt(message queuingtelemetry transport,消息队列遥测传输)模块,其中,wi-fi通信模块用于通信连接家庭储能设备与智能家居;鉴权模块用于验证智能家居的身份和权限,以确保只有授权的设备才可以访问家庭储能设备;mqtt模块用于在家庭储能设备与智能家居间传输消息,
mqtt协议是一种轻量级的协议,可以在低带宽和不稳定的网络环境中工作,并且具有高度可扩展性。相应地,上述wi-fi通信模块对应的线程编号为1,对应的预设事件为wifi_eventfd(wi-fi事件);上述鉴权模块对应的线程编号为2,对应的预设事件为auth_eventfd(鉴权事件);上述mqtt模块对应的线程编号为3,对应的预设事件为mqtt_eventfd(mqtt事件)。其中,预设事件是指根据iot应用的各个模块预先设置的事件。
30.在一实施例中,对于每一预设事件,还存在多个子类事件,子类事件的数量可以根据实际需求设置,在此不做限制。示例性地,若预设事件为wifi_eventfd,对应的子类事件可以包括wifi_connect_event(wi-fi连接事件)、wifi_reconnect_event(wi-fi重连事件)、wifi_disconnect_event(wi-fi断开事件)。若预设事件为auth_eventfd,对应的子类事件可以包括auth_event(鉴权事件)、reauth_event(重新鉴权事件)、auth_stop_event(停止鉴权事件)。若预设事件为mqtt_eventfd,对应的子类事件可以包括mqtt_connect_event(连接事件)、mqtt_reconnect_event(重连事件)、mqtt_disconnect_event(断开事件)。
31.在一些实施例中,生产线程可用于执行写入操作,从上述多个子类事件中选取目标事件,并对该目标事件执行消息写入操作。例如,若生产线程向第三方线程发送了十次wifi_connect_event事件的通知,则表明生产线程选取wi-fi连接事件为目标事件,并对该目标事件执行十次消息写入操作。生产线程在执行消息写入操作时,可向第三方线程发送消息写入指令,消息写入指令内可包含目标事件的名称、目标事件对应的写入时间以及写入编码等信息。之后,第三方线程通过解析消息写入指令,获取目标事件对应的计数器以及计数器中的计数器数值。在一实施例中,目标事件与写入编码间存在关联关系,生产线程能够获取目标事件关联的写入编码,并将写入编码填入消息写入指令中。
32.s12,在计数器中写入了目标事件对应的更新数值之后,基于更新数值对计数器数值进行更新。
33.在一些实施例中,对于每一预设事件,均存在对应的写入编码,基于写入编码对计数器数值进行更新,得到新的计数器数值。在一实施例中,写入编码可以以0xff为一个颗粒度进行编码,例如,在一些场景中,wi-fi连接事件对应的写入编码可以为0x0000000000000001,wi-fi重连事件对应的写入编码可以为0x0000000000000100。承接上述实施例,若生产线程向电子设备发送了十次wifi_connect_event事件的通知,目标事件对应的更新数值为0x0000000000000001*10,也即0x000000000000000a。之后,基于0x000000000000000a对计数器数值进行更新。在另一些场景中,若生产线程向电子设备发送了十次wifi_connect_event事件的通知,也可以用0x0000000000000001对计数器数值更新10次。
34.s13,响应于消费线程对计数器的消息读取指令,将计数器对应的计数器数值读取至消费线程,以使消费线程根据计数器对应的计数器数值确定发生目标事件。
35.在一些实施例中,消费线程用于读取生产线程写入的事件,消费线程向第三方线程发送对计数器的消息读取指令,消息读取指令是指预先设置的用于读取第三方线程内所有计数器或者指定计数器对应的计数器数值的指令。在一实施例中,若消息读取指令用于读取指定计数器对应的计数器数值,则在消息读取指令中包含指定计数器的编号或名称;若消息读取指令用于读取所有计数器对应的计数器数值,则在消息读取指令中未包含任一
计数器的编号或名称。若第三方线程接收到消息读取指令,通过解析消息读取指令是否包含计数器的编号或名称,以确定消费线程用于读取所有计数器或者指定计数器对应的计数器数值。在一实施例中,若消息读取指令中未包含任一计数器的编号或名称,则将每一计数器对应的计数器数值读取至消费线程,以使消费线程根据计数器对应的计数器数值确定发生的目标事件;若消息读取指令中包含计数器的编号或名称,则将根据计数器的编号或名称确定指定计数器对应的计数器数值读取至消费线程,以使消费线程根据计数器对应的计数器数值确定发生的目标事件。
36.本技术实施例提供的消息处理方法中,响应于生产线程对目标事件的消息写入指令,获取目标事件对应的计数器中的计数器数值,在计数器中写入了目标事件对应的更新数值之后,基于更新数值对计数器数值进行更新;响应于消费线程对计数器的消息读取指令,将计数器对应的计数器数值读取至消费线程,以使消费线程根据计数器对应的计数器数值确定发生目标事件。本技术实施例通过事件机制进行消息处理,无需像消息队列那样进行内核和用户空间之间的数据拷贝,且事件机制的数据传输是基于计数器实现的,无需对消息进行序列化和反序列化的操作,能够提高通信效率。
37.在一些实施例中,对于每一事件,在电子设备内均存在与之对应的计数器。预先对事件与计数器建立第一映射关系,通过查询该第一映射关系,能够确定目标事件对应的计数器。本技术实施例通过建立事件与计数器的对应关系,能够在接收到生产线程对于目标事件发出的消息写入指令时,快速确定目标事件对应的计数器,能够提高通信的效率。
38.在一些实施例中,生产线程存在对于同一事件多次向第三方线程发送消息写入指令(例如,生产线程对于wi-fi连接事件向第三方线程发送两次消息写入指令)的情况,若消费线程未及时处理,则会导致消费线程对同一事件的多个消息写入指令进行重复读取操作的问题,影响通信效率。在一实施例中,若创建设置semaphor(信号量)标志位的事件,生产线程每次对于目标事件向第三方线程发送消息写入指令时,第三方线程将消息写入指令中携带的写入编码记作1,并在该目标事件对应的计数器中加1。消费线程向第三方线程发送消息读取指令时,第三方线程每次都会返回1,并将计数器的计数器数值减1。上述实施例会导致消费线程对同一事件的多个消息写入指令重复操作的问题,影响通信效率。为避免上述问题,需对同一事件的多个消息写入指令执行去重处理,在一实施例中,在初始化事件时,不引入semaphor(信号量)标志位,也即创建不设置semaphor标志位的事件。若事件内未引入semaphor标志位,生产线程每次对于目标事件向第三方线程发送消息写入指令时,第三方线程将消息写入指令中携带的写入编码更新至该目标事件对应的计数器中。消费线程向第三方线程发送消息读取指令时,第三方线程返回计数器在当前时刻对应的计数器数值,并将计数器置0。通过上述实施例,消费线程仅会接收到一次对于目标事件的写入通知,可避免消费线程对同一事件的多个消息写入指令进行重复读取操作的问题,提高通信效率。
39.由上述实施例可知,各个计数器的计数器数值的初始值均为0,第三方线程通过解析生产线程对目标事件发出的消息写入指令,得到目标事件对应的更新数值,将更新数值更新至目标事件对应计数器的初始值0中,得到新的计数器数值;之后,若第三方线程继续接收到对目标事件的消息写入指令,则通过继续解析消息写入指令得到目标事件对应的更新数值,并将更新数值更新至目标事件对应新的计数器数值中。本技术实施例通过将计数
器的计数器数值的初始值为0,能够确保消费线程读取到的计数器数值与生产线程发送的消息写入指令一致,提高通信的准确性。
40.在一些实施例中,计数器可以是32位、64位以及128位,在此不做限制。本技术实施例以计数器为64位为例,即存在64个二进制位。在一实施例中,将8个位作为一个字节空间,一个字节空间表示一个事件,此时,一个计数器相当于8个字节空间。在其他实施例中,还可以将4个位作为一个字节空间,此时,一个计数器相当于16个字节空间,在此不做限制。本技术实施例以8个位表示一个事件为例,wi-fi连接事件对应的写入编码可以为0x0000000000000001,wi-fi重连事件对应的写入编码可以为0x0000000000000100。此时,若生产线程对wi-fi连接事件连续发送256个消息写入指令,则计数器对应的计数器值为0x0000000000000100,此时,计数器数值才会与wi-fi重连事件对应的写入编码相同。而实际应用中,线程并不会阻塞这么久,也即获取的计数器值与写入编码不会存在相同的情况。本技术实施例通过将每一事件用8个位来表示,能够避免获取的计数器值与写入编码相同导致数据混淆的问题(例如,若wi-fi连接事件对应的写入编码为1,wi-fi重连事件对应的写入编码为2,若生产线程对wi-fi连接事件发送了2次消息写入指令,则计数器对应的计数器数值为2,与wi-fi重连事件对应的写入编码相同,容易造成数据混淆的问题),提高目标事件确定的准确性,从而提高通信的准确性。
41.在一些实施例中,基于更新数值对计数器数值进行更新,包括:在更新数值与计数器数值均为二进制位时,根据二进制位的计算方式计算更新后的计数器数值。承接上述实施例,wi-fi连接事件对应的写入编码可以为0x0000000000000001,wi-fi连接事件对应计数器的计数器数值为0,若生产线程对于该事件向电子设备发送10次消息写入指令,得到该事件对应的更新数值为0x0000000000000001*10,也即0x000000000000000a。之后,基于0x000000000000000a对计数器数值0进行相加,得到更新后的计数器数值为0x000000000000000a。本技术实施例通过将事件用二进制位的方式表示,之后根据二进制位的计算方式计算计数器数值,能够避免获取的计数器值与写入编码相同导致数据混淆的问题,提高目标事件确定的准确性,从而提高通信的准确性。
42.在一些实施例中,在响应于消费线程对计数器的消息读取指令,将计数器对应的计数器数值读取至消费线程之后,消费线程会根据计数器数值确定对应的目标事件,并对目标事件执行相应的操作。如此,第三方线程在消费线程将当前时刻生产线程写入至计数器中的目标事件处理完成,该第三方线程将目标事件对应的计数器置0。本技术通过在将计数器对应的计数器数值读取至消费线程之后,将计数器置0,以及时表明消费线程已将当前时刻生产线程写入至计数器中的目标事件处理完成;之后再接收到生产线程的消息写入指令时,根据消息写入指令对应的更新数值在初始值0的基础上相加,能够提高消费线程对目标事件处理的准确性,从而提高通信的准确性。
43.图3是本技术实施例提供的计数器数值的读取流程示意图,在一实施例中,计数器数值的读取方法可应用于第三方线程;在其他实施例中,计数器数值的读取方法可应用于消费线程。本技术实施例仅以计数器数值的读取方法应用于第三方线程为例,如图3所示,计数器数值的读取方法可以包括如下步骤,根据不同的需求,该流程图中步骤的顺序可以改变,某些可以省略。
44.s21,获取各预设事件对应的预设掩码信息。
45.在一些实施例中,预设掩码信息用于识别某一段数值范围对应的事件,例如,wi-fi事件包含wi-fi连接事件、wi-fi重连事件、wi-fi断开事件、wi-fi扫描事件等,其中,wi-fi连接事件对应的预设掩码信息可以为0x00000000000000ff,此时,wi-fi连接事件对应的计数器的最大值小于或等于0x00000000000000ff;wi-fi重连事件对应的预设掩码信息可以为0x000000000000ff00,此时,wi-fi重连事件对应的计数器的最大值小于或等于0x000000000000ff00,以此类推。对于每一预设事件,均存在对应的预设掩码信息。在一实施例中,直接获取各预设事件关联的预设掩码信息。在其他实施例中,预先设置预设事件与预设掩码信息的映射关系,通过查询该映射关系,能够得到预设事件对应的预设掩码信息。本技术实施例通过使用掩码机制能够将一个事件扩展成多个子事件,能够节省系统资源。
46.s22,分别对各预设掩码信息与计数器对应的计数器数值执行逻辑与处理,得到各预设掩码信息对应逻辑结果。
47.在一些实施例中,将各预设掩码信息与计数器对应的计数器数值执行逻辑与处理后,得到的逻辑结果可以包括0与非0。
48.s23,将逻辑结果发送给消费线程,以使消费线程根据逻辑结果确定发生目标事件。
49.在一些实施例中,将0与非0的逻辑结果发送给消费线程,以使消费线程根据逻辑结果确定发生目标事件。示例性地,若逻辑结果为0,则表明不存在该计数器对应的事件;若逻辑结果为非0,则表明存在该计数器对应的事件。
50.示例性地,wi-fi连接事件对应的预设掩码信息为0x00000000000000ff,wi-fi连接事件对应的写入编码为0x0000000000000001,wi-fi连接事件对应计数器的计数器数值为0。若生产线程对于该事件向第三方线程发送10次消息写入指令,得到该事件对应的更新数值为0x0000000000000001*10,也即0x000000000000000a。之后,基于0x000000000000000a对计数器数值0进行相加,得到更新后的计数器数值为0x000000000000000a。将0x00000000000000ff与0x000000000000000a执行逻辑与处理后,得到逻辑结果为非0,则确定发生wi-fi连接事件。
51.本技术实施例通过获取各预设事件对应的预设掩码信息,并对各预设掩码信息与计数器对应的计数器数值执行逻辑与处理,能够根据逻辑结果确定目标事件,提高目标事件确定的准确性,继而提高通信的准确性。在本技术的其他实施例中,该第三方线程还可以直接将该计数器数值传输给该消费线程,该消费线程根据该计数器数值与掩码信息进行相关的处理得到逻辑结果,再根据逻辑结果确定目标事件。
52.图4是本技术实施例提供的目标事件的确定流程示意图,目标事件的确定方法可应用于电子设备,进一步地,目标事件的确定方法可应用于电子设备的消费线程。如图4所示,目标事件的确定方法可以包括如下步骤,根据不同的需求,该流程图中步骤的顺序可以改变,某些可以省略。
53.s31,确定逻辑结果为非0的目标掩码信息。
54.在一些实施例中,分别对各预设掩码信息与计数器对应的计数器数值执行逻辑与处理,得到各预设掩码信息对应逻辑结果,从多个逻辑结果中选取非0的逻辑结果,之后确定与非0的逻辑结果关联的目标掩码信息。
55.s32,根据预先设置的掩码信息与事件的映射关系,确定目标掩码信息对应的事件
为目标事件。
56.本技术实施例对各预设掩码信息与计数器对应的计数器数值执行逻辑与处理,能够根据逻辑结果确定目标事件,提高目标事件确定的准确性,继而提高通信的准确性。本技术实施例通过对更新数值与计数器数值计算得到更新后的计数器值,之后根据更新后的计数器值和相关的掩码信息确定事件,能够对事件消息进行去重处理,进一步提高了通信效率。
57.图5是本技术实施例提供的映射关系的建立流程示意图,映射关系的建立方法可应用于电子设备,进一步地,映射关系的建立方法可应用于电子设备的第三方线程。如图5所示,映射关系的建立方法可以包括如下步骤,根据不同的需求,该流程图中步骤的顺序可以改变,某些可以省略。
58.s41,获取计数器对应二进制位的数量。
59.在一些实施例中,计数器对应二进制位的数量可以是32位、64位以及128位,在此不做限制。本技术实施例以计数器为64位为例,即存在64个二进制位。
60.s42,根据二进制位的数量确定预设数量的字节空间。
61.在一些实施例中,预设数量可以根据事件的数量确定,例如,预设数量可以为8个,也即将8个位作为一个字节空间,一个字节空间表示一个事件,一个计数器相当于8个字节空间;或者,预设数量可以为4个,也即将4个位作为一个字节空间,一个字节空间表示一个事件,一个计数器相当于16个字节空间;又或者,预设数量可以为2个,也即将2个位作为一个字节空间,一个字节空间表示一个事件,一个计数器相当于32个字节空间。
62.s43,根据设置信息,建立字节空间与预设事件的映射关系。
63.在一些实施例中,根据上述步骤s41-s42的设置信息,对字节空间与预设事件建立映射关系,本技术实施例以8位表示一个事件为例,wifi连接事件对应的写入编码可以为0x0000000000000001,wifi重连事件对应的写入编码可以为0x0000000000000100。
64.本技术实施例获取计数器对应二进制位的数量,之后根据数量确定预设数量的字节空间,并建立字节空间与预设事件的映射关系,确保每一预设事件存在对应的字节空间。通过将事件用二进制位的方式表示,之后根据二进制位的计算方式计算计数器数值,能够避免获取的计数器值与写入编码相同导致数据混淆的问题,提高目标事件确定的准确性,从而提高通信的准确性。
65.请参阅图6,图6是本技术实施例提供的消息处理装置的结构示意图。在一些实施例中,消息处理装置20可以包括多个由计算机程序段所组成的功能模块。消息处理装置20中的各个程序段的计算机程序可以存储于电子设备的存储器中,并由至少一个处理器所执行,以执行(详见图2描述)消息处理的功能。
66.本实施例中,消息处理装置20根据其所执行的功能,可以被划分为多个功能模块。功能模块可以包括:指令响应模块201、数值更新模块202以及事件确定模块203。本技术所称的模块是指一种能够被至少一个处理器所执行并且能够完成固定功能的一系列计算机程序段,其存储在存储器中。在本实施例中,关于各模块的功能将在后续的实施例中详述。
67.指令响应模块201,用于响应于生产线程对目标事件的消息写入指令,获取目标事件对应的计数器中的计数器数值。
68.数值更新模块202,用于在计数器中写入了目标事件对应的更新数值之后,基于更
新数值对计数器数值进行更新;
69.事件确定模块203,用于响应于消费线程对计数器的消息读取指令,将计数器对应的计数器数值读取至消费线程,以使消费线程根据计数器对应的计数器数值确定发生目标事件。
70.可以理解,消息处理装置20与上述实施例的消息处理方法属于同一发明构思,消息处理装置20各模块的具体实现方式,与上述实施例中消息处理方法的各步骤对应,本技术在此不赘述。
71.以上所描述的模块划分,为一种逻辑功能划分,实际实现时可以有另外的划分方式。另外,在本技术各个实施例中的各功能模块可以集成在相同处理单元中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在相同单元中。上述集成的模块既可以采用硬件的形式实现,也可以采用硬件加软件功能模块的形式实现。
72.图7是本技术实施例提供的电子设备的结构示意图。如图7所示,电子设备30包括存储器31、至少一个处理器32、至少一条通信总线33以及收发器34,处理器32用于执行存储器31中存储的计算机程序时实现的消息处理方法。
73.本领域技术人员应该了解,图7示出的电子设备的结构并不构成本技术实施例的限定,既可以是总线型结构,也可以是星形结构,电子设备30还可以包括比图示更多或更少的其他硬件或者软件,或者不同的部件布置。
74.在一些实施例中,电子设备30是一种能够按照事先设定或存储的指令,自动进行数值计算和/或信息处理的设备,其硬件包括但不限于微处理器、专用集成电路、可编程门阵列、数字处理器及嵌入式设备等。电子设备30还可连接客户设备,客户设备包括但不限于任何一种可与客户通过键盘、鼠标、遥控器、触摸板或声控设备等方式进行人机交互的电子产品,例如,个人计算机、平板电脑、智能手机、数码相机等。
75.需要说明的是,电子设备30仅为举例,其他现有的或今后可能出现的电子产品如可适应于本技术,也应包含在本技术的保护范围以内,并以引用方式包含于此。
76.在一些实施例中,至少一条通信总线33被设置为实现存储器31以及至少一个处理器32等之间的连接通信。
77.尽管未示出,电子设备30还可以包括给各个部件供电的电源(比如电池),优选的,电源可以通过电源管理装置与至少一个处理器32逻辑相连,从而通过电源管理装置实现管理充电、放电、以及功耗管理等功能。电源还可以包括一个或一个以上的直流或交流电源、再充电装置、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。电子设备30还可以包括多种传感器、蓝牙模块、wi-fi模块等,在此不再赘述。
78.在一些实施例中,存储器31中存储有计算机程序,计算机程序被至少一个处理器32执行时实现如的消息处理方法中的全部或者部分步骤。存储器31包括只读存储器(read-only memory,rom)、可编程只读存储器(programmable read-only memory,prom)、可擦除可编程只读存储器(erasable programmable read-only memory,eprom)、一次可编程只读存储器(one-time programmable read-only memory,otprom)、电子擦除式可复写只读存储器(electrically-erasable programmable read-only memory,eeprom)、只读光盘(compact disc read-only memory,cd-rom)或其他光盘存储器、磁盘存储器、磁带存储器、或者能够用于携带或存储数据的计算机可读的任何其他介质。
79.进一步地,计算机可读存储介质可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序等;存储数据区可存储根据电子设备30的使用所创建的数据等。
80.在一些实施例中,至少一个处理器32是电子设备30的控制核心(control unit),利用各种接口和线路连接整个电子设备30的各个部件,通过运行或执行存储在存储器31内的程序或者模块,以及调用存储在存储器31内的数据,以执行电子设备30的各种功能和处理数据。例如,至少一个处理器32执行存储器中存储的计算机程序时实现本技术实施例中的消息处理方法的全部或者部分步骤;或者实现消息处理装置的全部或者部分功能。至少一个处理器32可以由集成电路组成,例如可以由单个封装的集成电路所组成,也可以是由多个相同功能或不同功能封装的集成电路所组成,包括一个或者多个中央处理器(central processing unit,cpu)、微处理器、数字处理芯片、图形处理器及各种控制芯片的组合等。
81.上述以软件功能模块的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能模块存储在一个存储介质中,包括若干指令用以使得一台电子设备(可以是个人计算机,电子设备,或者网络设备等)或处理器(processor)执行本技术各个实施例方法的部分。
82.在本技术所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
83.作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理单元,既可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
84.另外,在本技术各个实施例中的各功能模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能模块的形式实现。
85.对于本领域技术人员而言,显然本技术不限于上述示范性实施例的细节,而且在不背离本技术的精神或基本特征的情况下,能够以其他的具体形式实现本技术。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本技术的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本技术内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。此外,显然“包括”一词不排除其他单元或,单数不排除复数。说明书中陈述的多个单元或装置也可以由一个单元或装置通过软件或者硬件来实现。第一,第二等词语用来表示名称,而并不表示任何特定的顺序。
86.最后应说明的是,以上实施例仅用以说明本技术的技术方案而非限制,尽管参照较佳实施例对本技术进行了详细说明,本领域的普通技术人员应当理解,可以对本技术的技术方案进行修改或等同替换,而不脱离本技术技术方案的精神和范围。
技术特征:
1.一种消息处理方法,其特征在于,包括:响应于生产线程对目标事件的消息写入指令,获取所述目标事件对应的计数器中的计数器数值;在所述计数器中写入了所述目标事件对应的更新数值之后,基于所述更新数值对所述计数器数值进行更新;响应于消费线程对所述计数器的消息读取指令,将所述计数器对应的计数器数值读取至所述消费线程,以使所述消费线程根据所述计数器对应的计数器数值确定发生所述目标事件。2.如权利要求1所述的消息处理方法,其特征在于,在所述获取所述目标事件对应的计数器中的计数器数值之前,所述方法还包括:遍历预先设置的事件与计数器的第一映射关系,确定所述目标事件对应的计数器。3.如权利要求1所述的消息处理方法,其特征在于,所述计数器的计数器数值的初始值为0。4.如权利要求1所述的消息处理方法,其特征在于,所述基于所述更新数值对所述计数器数值进行更新,包括:在所述更新数值与所述计数器数值均为二进制位时,根据二进制位的计算方式计算更新后的计数器数值。5.如权利要求1所述的消息处理方法,其特征在于,在所述响应于消费线程对所述计数器的消息读取指令,将所述计数器对应的计数器数值读取至所述消费线程之后,所述方法还包括:将所述计数器置0。6.如权利要求1所述的消息处理方法,其特征在于,所述将所述计数器对应的计数器数值读取至所述消费线程,以使所述消费线程根据所述计数器对应的计数器数值确定发生所述目标事件包括:将所述计数器对应的计数器数值读取至所述消费线程,以使所述消费线程获取各预设事件对应的预设掩码信息,分别对各所述预设掩码信息与所述计数器对应的计数器数值执行逻辑与处理,得到各所述预设掩码信息对应逻辑结果,并根据所述逻辑结果确定发生所述目标事件。7.如权利要求6所述的消息处理方法,其特征在于,所述根据所述逻辑结果确定发生所述目标事件,包括:确定所述逻辑结果为非0的目标掩码信息;根据预先设置的掩码信息与事件的映射关系,确定所述目标掩码信息对应的事件为所述目标事件。8.如权利要求1所述的消息处理方法,其特征在于,所述方法还包括:获取所述计数器对应二进制位的数量;根据所述二进制位的数量确定预设数量的字节空间;根据设置信息,建立所述字节空间与所述预设事件的映射关系。9.一种电子设备,其特征在于,所述电子设备包括处理器,所述处理器用于执行存储器中存储的计算机程序时实现如权利要求1至8中任意一项所述的消息处理方法。
10.一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至8中任意一项所述的消息处理方法。
技术总结
本申请实施例提供一种消息处理方法、电子设备与存储介质,消息处理方法包括:响应于生产线程对目标事件的消息写入指令,获取目标事件对应的计数器中的计数器数值;在计数器中写入了目标事件对应的更新数值之后,基于更新数值对计数器数值进行更新;响应于消费线程对计数器的消息读取指令,将计数器对应的计数器数值读取至消费线程,以使消费线程根据计数器对应的计数器数值确定发生目标事件。上述方法能够提高通信效率。够提高通信效率。够提高通信效率。
技术研发人员:赵密 陈熙 王雷
受保护的技术使用者:深圳市正浩创新科技股份有限公司
技术研发日:2023.07.25
技术公布日:2023/10/5
版权声明
本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
航空之家 https://www.aerohome.com.cn/
飞机超市 https://mall.aerohome.com.cn/
航空资讯 https://news.aerohome.com.cn/
上一篇:一种验光仪操控手柄的制作方法 下一篇:一种电催化氧化处理垃圾渗滤液的方法与流程