CN115599714A - 一种多线程同步的车端数据采集方法及装置 - Google Patents
一种多线程同步的车端数据采集方法及装置 Download PDFInfo
- Publication number
- CN115599714A CN115599714A CN202211194399.2A CN202211194399A CN115599714A CN 115599714 A CN115599714 A CN 115599714A CN 202211194399 A CN202211194399 A CN 202211194399A CN 115599714 A CN115599714 A CN 115599714A
- Authority
- CN
- China
- Prior art keywords
- command
- queue
- operation command
- command queue
- data acquisition
- 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/10—Program control for peripheral devices
- G06F13/12—Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor
- G06F13/124—Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor where hardware is a sequential transfer control unit, e.g. microprocessor, peripheral processor or state-machine
- G06F13/126—Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor where hardware is a sequential transfer control unit, e.g. microprocessor, peripheral processor or state-machine and has means for transferring I/O instructions and statuses between control unit and main processor
-
- 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
- G06F13/4295—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus using an embedded synchronisation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Stored Programmes (AREA)
Abstract
本发明涉及一种多线程同步的车端数据采集方法及装置,包括:关联车端数据采集工具的操作命令和对应的执行函数接口;构建命令队列,将操作命令插入所述命令队列;启动命令执行线程,轮询检查所述命令队列,若命令队列非空则依次执行命令队列中各操作命令关联的执行函数接口;判断命令队列中下一操作命令是否需要当前操作命令的返回结果,若需要则令命令执行线程阻塞等待。本发明将需要依次访问各个模块线程又常规的用户操作串行化,简化代码且减少程序出错。
Description
技术领域
本发明涉及数据采集技术领域,具体涉及一种多线程同步的车端数据采集方法及装置。
背景技术
获取地图导航需要的大数据信息的重要一环,就是车端采集工具对车载传感器数据的收集,标记和传输工作。作为数据信息采集的中间环节,车端采集工具需要同时与硬件数据生成软件完成数据交换,与云端服务器同步采集信息,同时保存需要暂存的数据到本地数据库。为了将这些相对独立又数据相关的功能结合在一起,一般软件界面框架可选择Qt,为了表现更丰富的界面效果,前端可使用qml语言编写,同时将各模块运行在不同的线程上保证并行性,Qt的灵活的信号/槽机制可以处理数据的传递和操作的执行。但是,当线程增多,要求有返回的线程间数据逻辑跳转使得编码实现变得麻烦。
Qt的信号/槽机制使用队列连接的方式允许连接的信号和槽在不同线程上发送和执行,信号允许带参数,但在不建立新的信号/槽连接的情况下是无法获取槽执行的返回值的。若界面上用户一个操作集合了访问传感器数据、操作本地数据库、调用云端http接口等步骤,那么在各个模块线程间添加一对执行/返回的信号/槽会使编码量变得巨大,数据传递的路线复杂且容易出错。
发明内容
本发明针对现有技术中存在的技术问题,提供一种多线程同步的车端数据采集方法及装置,将需要依次访问各个模块线程又常规的用户操作串行化,简化代码且减少程序出错。
本发明解决上述技术问题的技术方案如下:
第一方面,本发明提供一种多线程同步的车端数据采集方法,包括:
关联车端数据采集工具的操作命令和对应的执行函数接口;
构建命令队列,将操作命令插入所述命令队列;
启动命令执行线程,轮询检查所述命令队列,若命令队列非空则依次执行命令队列中各操作命令关联的执行函数接口;
判断命令队列中下一操作命令是否需要当前操作命令的返回结果,若需要则令命令执行线程阻塞等待。
进一步的,所述的将操作命令插入所述命令队列,包括:根据车端数据采集工具的操作命令触发信号,利用信号/槽机制,由信号对应的槽将所述操作指令插入所述命令队列中。
进一步的,所述的令命令执行线程阻塞等待通过Qt的事件循环机制实现。
第二方面,本发明提供一种多线程同步的车端数据采集装置,包括:
关联模块,关联车端数据采集工具的操作命令和对应的执行函数接口;
队列构建模块,构建命令队列,将操作命令插入所述命令队列;
命令执行模块,启动命令执行线程,轮询检查所述命令队列,若命令队列非空则依次执行命令队列中各操作命令关联的执行函数接口;
等待判断模块,判断命令队列中下一操作命令是否需要当前操作命令的返回结果,若需要则令命令执行线程阻塞等待。
第三方面,本发明提供一种电子设备,包括:
存储器,用于存储计算机软件程序;
处理器,用于读取并执行所述计算机软件程序,进而实现本发明第一方面所述的一种多线程同步的车端数据采集方法。
第四方面,本发明提供一种非暂态计算机可读存储介质,所述存储介质中存储有用于实现本发明第一方面所述的一种多线程同步的车端数据采集方法的计算机软件程序。
本发明的有益效果是:本发明结合了Qt信号/槽的灵活性和多线程的并行性。简化了逻辑代码编写难度,减少了代码量,同时避免了线程间不同步的问题。
附图说明
图1为本发明实施例提供的一种多线程同步的车端数据采集方法流程图;
图2为本发明实施例提供的一种多线程同步的车端数据采集装置结构图;
图3为本发明实施例提供的电子设备的实施例示意图;
图4为本发明实施例提供的一种计算机可读存储介质的实施例示意图。
具体实施方式
以下结合附图对本发明的原理和特征进行描述,所举实例只用于解释本发明,并非用于限定本发明的范围。
本发明实施例车端数据采集工具在多线程运行各模块的任务(包括利用传感器数据接收线程接收各类传感器数据,利用本地数据库操作线程实现数据的增删改查功能,利用云端接口调用线程调用云端接口获取、上传数据)时,构建一个新的线程进行用户操作的逻辑执行。使用队列存储前端发送的命令,执行线程轮询队列执行对应的命令逻辑。需要数据在线程间传递时使用Qt的事件循环机制等待信号阻塞当前线程,等待结果返回再继续执行,从而实现各线程操作的同步。
具体的,本发明实施例提供一种多线程同步的车端数据采集方法,如图1所示,包括以下步骤:
S100,关联车端数据采集工具的操作命令和对应的执行函数接口,从而建立前端发出的信号种类(enum)与对应执行接口(成员函数指针)的联系(map)。
S200,构建命令队列,将操作命令插入所述命令队列。根据车端数据采集工具的操作命令触发信号,利用信号/槽机制,由信号对应的槽将所述操作指令插入所述命令队列中。
S300,启动命令执行线程,轮询检查所述命令队列,若命令队列非空则依次执行命令队列中各操作命令关联的执行函数接口。执行完毕后则将该操作命令从所述命令队列中删除。
S400,判断命令队列中下一操作命令是否需要当前操作命令的返回结果,若需要则令命令执行线程阻塞等待。
车端数据采集工具除了界面主线程外,分别启动传感器数据接收线程、本地数据库操作线程、云端接口调用线程等。传感器数据接收线程接收各类传感器数据,本地数据库操作线程实现数据的增删改查功能,云端接口调用线程调用云端接口获取、上传数据。
用户的操作行为所发出的指令具有未知性和及时性(界面操作一般要求非需求不会阻塞),然而后台的某些资源设备占用和部分逻辑顺序要求阻塞或有先后,使用命令队列能较好地平衡这两种需求。
单个命令执行的实现逻辑步骤一般是串行的。现有技术在线程间通过信号/槽机制调用时,信号/槽采样QueuedConnection连接,发完之后不会阻塞等待。这就会使用信号/槽机制在各线程间频繁跳转,导致流程看上去杂乱难以实现且不利于代码的后期维护,每次线程间调用若想获取返回结果只能通过再添加一对信号/槽来返回,这为实现上增加不少负担。而且若不使用串行队列对执行命令同步的话,来自界面前端的指令信号1到达后对应的处理步骤还没完成,指令信号2就已经到达了,若1的处理在阻塞等待,那么指令信号2对应的处理步骤就要开始执行了,理论上指令信号的调用是有先后逻辑关系的,这样就会导致逻辑混乱出现问题。而本发明中阻塞和等待信号返回的功能是通过Qt的事件循环机制实现的,这种同步操作将命令的执行逻辑实现变得简单清晰。
图2为本发明实施例提供的一种多线程同步的车端数据采集装置结构图。
如图2所示,该装置包括:
关联模块,关联车端数据采集工具的操作命令和对应的执行函数接口;
队列构建模块,构建命令队列,将操作命令插入所述命令队列;
命令执行模块,启动命令执行线程,轮询检查所述命令队列,若命令队列非空则依次执行命令队列中各操作命令关联的执行函数接口;
等待判断模块,判断命令队列中下一操作命令是否需要当前操作命令的返回结果,若需要则令命令执行线程阻塞等待。
请参阅图3,图3为本发明实施例提供的电子设备的实施例示意图。如图3所示,本发明实施例提了一种电子设备500,包括存储器510、处理器520及存储在存储器520上并可在处理器520上运行的计算机程序511,处理器520执行计算机程序511时实现以下步骤:
关联车端数据采集工具的操作命令和对应的执行函数接口;
构建命令队列,将操作命令插入所述命令队列;
启动命令执行线程,轮询检查所述命令队列,若命令队列非空则依次执行命令队列中各操作命令关联的执行函数接口;
判断命令队列中下一操作命令是否需要当前操作命令的返回结果,若需要则令命令执行线程阻塞等待。
请参阅图4,图4为本发明实施例提供的一种计算机可读存储介质的实施例示意图。如图4所示,本实施例提供了一种计算机可读存储介质600,其上存储有计算机程序611,该计算机程序611被处理器执行时实现如下步骤:
关联车端数据采集工具的操作命令和对应的执行函数接口;
构建命令队列,将操作命令插入所述命令队列;
启动命令执行线程,轮询检查所述命令队列,若命令队列非空则依次执行命令队列中各操作命令关联的执行函数接口;
判断命令队列中下一操作命令是否需要当前操作命令的返回结果,若需要则令命令执行线程阻塞等待。
需要说明的是,在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详细描述的部分,可以参见其它实施例的相关描述。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式计算机或者其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包括这些改动和变型在内。
Claims (8)
1.一种多线程同步的车端数据采集方法,其特征在于,包括:
关联车端数据采集工具的操作命令和对应的执行函数接口;
构建命令队列,将操作命令插入所述命令队列;
启动命令执行线程,轮询检查所述命令队列,若命令队列非空则依次执行命令队列中各操作命令关联的执行函数接口;
判断命令队列中下一操作命令是否需要当前操作命令的返回结果,若需要则令命令执行线程阻塞等待。
2.根据权利要求1所述的方法,其特征在于,所述的将操作命令插入所述命令队列,包括:根据车端数据采集工具的操作命令触发信号,利用信号/槽机制,由信号对应的槽将所述操作指令插入所述命令队列中。
3.根据权利要求1所述的方法,其特征在于,所述的令命令执行线程阻塞等待通过Qt的事件循环机制实现。
4.一种多线程同步的车端数据采集装置,其特征在于,包括:
关联模块,关联车端数据采集工具的操作命令和对应的执行函数接口;
队列构建模块,构建命令队列,将操作命令插入所述命令队列;
命令执行模块,启动命令执行线程,轮询检查所述命令队列,若命令队列非空则依次执行命令队列中各操作命令关联的执行函数接口;
等待判断模块,判断命令队列中下一操作命令是否需要当前操作命令的返回结果,若需要则令命令执行线程阻塞等待。
5.根据权利要求4所述的装置,其特征在于,所述队列构建模块,具体用于:根据车端数据采集工具的操作命令触发信号,利用信号/槽机制,由信号对应的槽将所述操作指令插入所述命令队列中。
6.根据权利要求4所述的装置,其特征在于,所述的令命令执行线程阻塞等待通过Qt的事件循环机制实现。
7.一种电子设备,其特征在于,包括:
存储器,用于存储计算机软件程序;
处理器,用于读取并执行所述计算机软件程序,进而实现权利要求1-3任一项所述的一种多线程同步的车端数据采集方法。
8.一种非暂态计算机可读存储介质,其特征在于,所述存储介质中存储有用于实现权利要求1-3任一项所述的一种多线程同步的车端数据采集方法的计算机软件程序。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211194399.2A CN115599714A (zh) | 2022-09-28 | 2022-09-28 | 一种多线程同步的车端数据采集方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211194399.2A CN115599714A (zh) | 2022-09-28 | 2022-09-28 | 一种多线程同步的车端数据采集方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115599714A true CN115599714A (zh) | 2023-01-13 |
Family
ID=84844776
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211194399.2A Pending CN115599714A (zh) | 2022-09-28 | 2022-09-28 | 一种多线程同步的车端数据采集方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115599714A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116804942A (zh) * | 2023-06-26 | 2023-09-26 | 广东凯普科技智造有限公司 | 一种基于事件驱动的单片机操作系统实现方法 |
-
2022
- 2022-09-28 CN CN202211194399.2A patent/CN115599714A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116804942A (zh) * | 2023-06-26 | 2023-09-26 | 广东凯普科技智造有限公司 | 一种基于事件驱动的单片机操作系统实现方法 |
CN116804942B (zh) * | 2023-06-26 | 2024-04-02 | 广东凯普科技智造有限公司 | 一种基于事件驱动的单片机操作系统实现方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10664283B2 (en) | Computing system and controller thereof | |
CN103729288A (zh) | 一种嵌入式多核环境下应用程序的调试方法 | |
CN105183698B (zh) | 一种基于多核dsp的控制处理系统和方法 | |
CN101833440B (zh) | 编译器支持下的推测多线程内存数据同步执行方法及装置 | |
CN107451062B (zh) | 一种用户界面遍历测试方法、装置、服务器、存储介质 | |
CN102096629B (zh) | 经过性断点设置、调试方法和装置 | |
CN115599714A (zh) | 一种多线程同步的车端数据采集方法及装置 | |
CN103500139A (zh) | 一种通信软件集成测试系统及测试方法 | |
US20230351145A1 (en) | Pipelining and parallelizing graph execution method for neural network model computation and apparatus thereof | |
CN110362617A (zh) | 基于多并发技术从数据库快速导出批量数据方法和系统 | |
CN115481058A (zh) | 内存原子操作指令的执行方法、装置、访问模块及系统 | |
CN103870326A (zh) | 一种将中断处理程序底半部搬移到应用层的方法及应用 | |
CN103793208B (zh) | 矢量dsp处理器和协处理器协同运作的数据处理系统 | |
CN107832130A (zh) | 一种银行系统的作业流调度执行方法、装置及电子设备 | |
CN115640052A (zh) | 用于图形处理器中多核多流水线并行执行优化方法 | |
CN116107703A (zh) | 接口控制文档的生成方法及装置 | |
CN106021100A (zh) | 一种支持并行测试的测试任务运行调度方法 | |
CN102819419B (zh) | 指令执行流信息处理系统和装置及方法 | |
CN111209101B (zh) | 一种大数据计算任务多依赖调度系统 | |
CN113671924B (zh) | Dcs实时值置值方法和系统、设备及存储介质 | |
CN114116015B (zh) | 用于管理硬件命令队列的方法及系统 | |
CN110827001A (zh) | 一种会计事件记账方法、系统、设备和存储介质 | |
CN115576559A (zh) | 一种EtherCAT总线型运动控制系统的大型G代码数据处理和传输方法 | |
CN109947406B (zh) | 一种通用化星务管理系统架构 | |
EP4086753A1 (en) | Decision scheduling customization method and device based on information flow |
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 |