CN108768760B - 一种多机协同工作设备中高速数据流接收方法及系统 - Google Patents
一种多机协同工作设备中高速数据流接收方法及系统 Download PDFInfo
- Publication number
- CN108768760B CN108768760B CN201810294147.4A CN201810294147A CN108768760B CN 108768760 B CN108768760 B CN 108768760B CN 201810294147 A CN201810294147 A CN 201810294147A CN 108768760 B CN108768760 B CN 108768760B
- Authority
- CN
- China
- Prior art keywords
- data
- lock
- circular queue
- free circular
- speed data
- 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/10—Active monitoring, e.g. heartbeat, ping or trace-route
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1095—Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/22—Parsing or analysis of headers
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Health & Medical Sciences (AREA)
- Cardiology (AREA)
- General Health & Medical Sciences (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明公开了一种多机协同工作设备中高速数据流接收方法及系统,能够进一步提高高速数据流传输效率,同时避免多线程同步导致的数据传输错误。本发明技术方案为:上位机接收设定数量的下位机传输来的高速数据,对高速数据进行存储。上位机中正在执行的当前数据接收线程,对所存储的高速数据进行轮询检测,提取符合设定的判断条件的数据集合;设置数据同步锁,在当前数据接收线程对存储的高速数据进行轮询检测时,采用数据同步锁阻止其他线程对所存储的高速数据的操作。对当前数据接收线程提取的数据集合采用无锁循环队列进行存储、并进行数据解析。
Description
技术领域
本发明涉及信息与通信工程技术领域。
背景技术
在航天航空测控系统、空地通信系统中,地面测试设备负责对飞行器测控应答机进行全方位、多场景的地面测试验证,且人机交互功能是地面测试设备上位机软件的重要功能。
目前的地面测试设备通常是由下位机和上位机两部分组成,下位机与上位机之间由硬件高速接口连接。在地面测试设备中,因为上位机软件需要接收下位机调制解调后的高速数传数据流,所以上位机软件的数据流接收能力是影响软件性能的重要因素。特别是多机协同工作的设备,其中包括一台上位机和多台下位机,上位机需要对多台下位机的数据流进行接收,这对上位机的数据流接收能力提出了更高的要求。
现有的上位机接收数据流的方式是利用中断信号通知数据接收模块进行数据接收,然后通过读写锁控制数据的后续传输。这种现有的上位机接收数据流的方式,由于中断信号产生频繁的线程切换耗时较大,因此不适用于缓存区容量较小的平台硬件;且在利用读写锁控制数据后续传输的方式,在应对高速数据流时,会因频繁的出锁和入锁使其传输效率发生显著下降。
在多机协同工作设备中进行高速数据传递时,不可避免会涉及到线程间的高速数据传递,在多线程同步的情况下,如果一个线程正在执行某些数据处理,同时另一个线程需要使用其处理结果,这时程序运行就有可能发生错误。因此在进行高速数据传递时,不仅要考虑到数据的传输效率的问题,还应当考虑到多线程同步时的数据传输错误的问题。
如何进一步提高高速数据流传输效率,同时避免多线程同步导致的数据传输错误,是目前亟待解决的问题。
发明内容
有鉴于此,本发明提供了一种多机协同工作设备中高速数据流接收方法及系统,能够进一步提高高速数据流传输效率,同时避免多线程同步导致的数据传输错误。
在本发明的第一方面的实施例中,提供了一种多机协同工作设备中高速数据流接收方法,多机协同工作设备由一台上位机和设定数量的下位机组成,上位机采用接收系统接收设定数量的下位机传输的高速数据流。
方法包括如下步骤:
上位机接收设定数量的下位机传输来的高速数据,对高速数据进行存储。
上位机中正在执行的当前数据接收线程,对所存储的高速数据进行轮询检测,提取符合设定的判断条件的数据集合;设置数据同步锁,在当前数据接收线程对存储的高速数据进行轮询检测时,采用数据同步锁阻止其他线程对所存储的高速数据的操作。
对当前数据接收线程提取的数据集合采用无锁循环队列进行存储、并进行数据解析。
基于本发明的第一方面的实施例,进一步地,对所存储的高速数据进行轮询检测,提取符合设定的判断条件的数据集合,包括:
当前轮询检测过程为:根据设定的判断条件对所存储的高速数据进行查询,得到满足判断条件的数据组成数据集合之后,修改判断条件,并等待设定的等待时间后执行下一次轮询。
设定的等待时间为毫秒级时间,依据经验值设定。
修改后的判断条件使得下一次轮询中得到的数据集合不包含当前轮询得到的数据集合。
设定的判断条件的初始设定为依据数据需求设定。
基于本发明的第一方面的一个或多个实施例,进一步地,对提取的数据集合采用无锁循环队列进行存储,包括:
将提取的数据集合存入预先设立的无锁循环队列中,若数据集合的数据量大于无锁循环队列的剩余存储容量,对预先设立的无锁循环队列进行容量扩充,并将数据集合放入扩充后的无锁循环队列中。
基于本发明的第一方面的一个或多个实施例,进一步地,对无锁循环队列进行容量扩充,包括:
在预先设立的无锁循环队列中建立一级指针,一级指针指向下一无锁循环队列。
建立新无锁循环队列,将预先设立的无锁循环队列中的一级指针修改为指向新无锁循环队列。
本发明实施例还提供了一种基于上述多机协同工作设备中高速数据流接收方法的系统,多机协同工作设备由一台上位机和设定数量的下位机组成,上位机采用接收系统接收设定数量的下位机传输的高速数据流。
系统安装在上位机中,包括接口驱动模块、临时缓存模块、内核独占接收模块、无锁缓存模块以及数据解析模块。
接口驱动模块,配置用于接收设定数量的下位机传输来的高速数据,并将高速数据存入临时缓存模块。
内核独占接收模块,配置用于执行当前数据接收线程,对临时缓存模块进行轮询检测,提取符合设定的判断条件的数据集合,传输至无锁缓存模块;设定的判断条件的初始设定为依据数据需求设定。
内核独占接收模块,还配置用于设置数据同步锁,在当前数据接收线程对存储的高速数据进行轮询检测时,采用数据同步锁阻止其他线程对所存储的高速数据的操作。
无锁缓存模块,配置用于对当前数据接收线程提取的数据集合采用无锁循环队列进行存储。
数据解析模块,配置用于读取无锁缓存模块存储的数据帧并进行数据解析。
有益效果:
1、本发明提供了一种多机协同工作设备中高速数据流接收方法及系统,其方案是:在进行高速数据流接收的情况下,对存储的高速数据进行轮询检测,在轮询检测的过程中,设置数据同步锁阻止其他线程对高速数据流的接收,从而保证当前的接收线程对内核的独占使用,有效地提高了高速数据流接收效率,同时也避免了多线程同步导致的数据传输错误的问题。
2、本发明的技术方案中采用无锁循环队列对提取的数据集合进行存储,在高速数据多线程间传输的情况下,通过设计可扩展的无锁循环队列作为数据缓存区,当写入数据量远大于当前无锁循环队列的剩余存储容量时,对无锁循环队列进行容量扩充,并将数据集合放入扩充后的无锁循环队列中,进一步提高了高速数据流的接收效率。
3、本发明技术方案中,在进行数据传输时,上位机的不同线程间可能查找的数据有重复,导致重复的数据接收,进一步可能导致数据接收速度减小,为了避免重复数据查询,本发明中上位机通过修改判断条件,使得已收到的数据不再重复接收,能够进一步提高高速数据的接收效率。
附图说明
图1为本发明一个实施例提供的多机协同工作设备中高速数据流接收方法的流程示意图;
图2为本发明一个实施例提供的轮询检测方法的流程示意图;
图3为本发明一个实施例提供的无锁循环队列存储流程示意图;
图4为无锁循环队列的结构图;
图5为本发明一个实施例提供的多机协同工作设备中高速数据流接收系统组成结构框图。
具体实施方式
下面结合附图并举实施例,对本发明进行详细描述。
请参考图1,图1示出了本发明实施例提供的一种多机协同工作设备中高速数据流接收方法流程,该方法所针对的多机协同工作设备由一台上位机和设定数量的下位机组成,上位机采用接收系统接收设定数量的下位机传输的高速数据流;该方法主要包括如下步骤:
S101、上位机接收设定数量的下位机传输来的高速数据,对高速数据进行存储。本发明实施例中,上位机可以设置缓冲区对高速数据进行存储。
S102、上位机中正在执行的当前数据接收线程,对所存储的高速数据进行轮询检测,提取符合设定的判断条件的数据集合;设置数据同步锁,在当前数据接收线程对存储的高速数据进行轮询检测时,采用数据同步锁阻止其他线程对所存储的高速数据的操作。
该步骤中在进行高速数据流接收的情况下,对存储的高速数据进行轮询检测,在轮询检测的过程中,设置数据同步锁组织其他线程对高速数据流的接收,从而保证当前的接收线程对内核的独占使用,有效地提高了高速数据流接收效率,同时也避免了多线程同步导致的数据传输错误的问题。
S103、对当前数据接收线程提取的数据集合采用无锁循环队列进行存储、并进行数据解析。
该步骤中采用无锁循环队列对提取的数据集合进行存储,在高速数据多线程间传输的情况下,通过设计可扩展的无锁循环队列作为数据缓存区,当写入数据量远大于当前无锁循环队列的剩余存储容量时,对无锁循环队列进行容量扩充,并将数据集合放入扩充后的无锁循环队列中,进一步提高了高速数据流的接收效率。
请参考图2,图2示出了本发明一个实施例提供的关于步骤S102中轮询检测方法的流程示意图,具体包括如下步骤:
S201、第n次轮询中,n初始值为1;
根据设定的判断条件F1对所存储的高速数据进行查询,同时采用数据同步锁阻止其他线程对所存储的高速数据的操作。
S202、根据设定的判断条件F1,提取满足判断条件F1的数据组成数据集合;其中设定的判断条件的初始设定为依据数据需求设定。
S203、修改判断条件F1,修改后的判断条件使得第n+1次轮询中得到的数据集合不包含第n次轮询得到的数据集合;
S204、将第n次轮询得到的数据集合进行存储;等待设定的等待时间后,n 自增1,返回S201;其中设定的等待时间为依据经验值设定,为毫秒级时间。
请参考图3、对提取的数据集合采用无锁循环队列进行存储,包括:
S301、获取提取的数据集合的长度为L。
S302、判断提取的数据集合的长度L是否未超出预先设立的无锁循环队列的剩余存储容量,若是,则直接将提取的数据集合写入预先设立的无锁循环队列中,并对预先设立的无锁循环队列进行标识位调整;其中预先设立的无锁循环队列,其结构如图4所示,其本身具有的标志位包括读标志位和写标志位,该步骤即依据预先设立的无锁循环队列中的数据存储情况对读标志位和写标志位进行调整;否则进入S303。
S303、建立新的无锁循环队列。
S304、利用提取的数据集合将预先设立的无锁循环队列写满。
S305、写入新的无锁循环队列。
S306、对预先设立的无锁循环队列进行标志位调整。
S307、为预先设立的无锁循环队列添加一级指针,其中一级指针指向为下一无锁循环队列;本步骤中将预先设立的无锁循环队列中的一级指针修改为指向新无锁循环队列。
由此实现对预先设立的无锁循环队列的容量扩充。
请参考图4,图4示出了针对以上任一实施例给出的多机协同工作设备中高速数据流接收方法的系统,该系统用于多机协同工作设备的高速数据流接收;其中多机协同工作设备由一台上位机和设定数量的下位机组成,上位机采用接收系统接收设定数量的下位机传输的高速数据流。
系统安装在上位机中,包括接口驱动模块、临时缓存模块、内核独占接收模块、无锁缓存模块以及数据解析模块。
接口驱动模块,配置用于接收设定数量的下位机传输来的高速数据,并将高速数据存入临时缓存模块。
内核独占接收模块,配置用于执行当前数据接收线程,对临时缓存模块进行轮询检测,提取符合设定的判断条件的数据集合,传输至无锁缓存模块;设定的判断条件的初始设定为依据数据需求设定。
内核独占接收模块,还配置用于设置数据同步锁,在当前数据接收线程对存储的高速数据进行轮询检测时,采用数据同步锁阻止其他线程对所存储的高速数据的操作。
无锁缓存模块,配置用于对当前数据接收线程提取的数据集合采用无锁循环队列进行存储。
数据解析模块,配置用于读取无锁缓存模块存储的数据帧并进行数据解析。
综上,以上仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (2)
1.一种多机协同工作设备中高速数据流接收方法,其特征在于,所述多机协同工作设备由一台上位机和设定数量的下位机组成,所述上位机采用所述接收方法接收所述设定数量的下位机传输的高速数据流;
所述方法包括如下步骤:
S101、所述上位机接收所述设定数量的下位机传输来的高速数据,对所述高速数据进行存储;
S102、所述上位机中正在执行的当前数据接收线程,对所存储的所述高速数据进行轮询检测,提取符合设定的判断条件的数据集合,具体包括:
当前轮询检测过程为:根据设定的判断条件对所存储的所述高速数据进行查询,得到满足所述判断条件的数据组成数据集合之后,修改所述判断条件,并等待设定的等待时间后执行下一次轮询;
所述设定的等待时间为毫秒级时间,依据经验值设定;
修改后的判断条件使得下一次轮询中得到的数据集合不包含当前轮询得到的数据集合;
所述设定的判断条件的初始设定为依据数据需求设定;
步骤S102中轮询检测方法的流程具体包括如下步骤:
S201、第n次轮询中,n初始值为1;
根据设定的判断条件F1对所存储的高速数据进行查询,同时采用数据同步锁阻止其他线程对所存储的高速数据的操作;
S202、根据设定的判断条件F1,提取满足判断条件F1的数据组成数据集合;其中设定的判断条件的初始设定为依据数据需求设定;
S203、修改判断条件F1,修改后的判断条件使得第n+1次轮询中得到的数据集合不包含第n次轮询得到的数据集合;
S204、将第n次轮询得到的数据集合进行存储;等待设定的等待时间后,n自增1,返回S201;其中设定的等待时间为依据经验值设定,为毫秒级时间;
设置数据同步锁,在当前数据接收线程对所述存储的所述高速数据进行轮询检测时,采用数据同步锁阻止其他线程对所存储的所述高速数据的操作;
S103、对当前数据接收线程提取的数据集合采用无锁循环队列进行存储、并进行数据解析,具体包括:
将提取的数据集合存入预先设立的无锁循环队列中,若数据集合的数据量大于无锁循环队列的剩余存储容量,对所述预先设立的无锁循环队列进行容量扩充,并将数据集合放入扩充后的无锁循环队列;
对所述预先设立的无锁循环队列进行容量扩充,包括:
在所述预先设立的无锁循环队列中建立一级指针,所述一级指针指向下一无锁循环队列;
建立新无锁循环队列,将所述预先设立的无锁循环队列中的一级指针修改为指向所述新无锁循环队列;
对提取的数据集合采用无锁循环队列进行存储,包括:
S301、获取提取的数据集合的长度为L;
S302、判断提取的数据集合的长度L是否未超出预先设立的无锁循环队列的剩余存储容量,若是,则直接将提取的数据集合写入预先设立的无锁循环队列中,并对预先设立的无锁循环队列进行标识位调整;其中预先设立的无锁循环队列,其本身具有的标志位包括读标志位和写标志位,该步骤即依据预先设立的无锁循环队列中的数据存储情况对读标志位和写标志位进行调整;否则进入S303;
S303、建立新的无锁循环队列;
S304、利用提取的数据集合将预先设立的无锁循环队列写满;
S305、写入新的无锁循环队列;
S306、对预先设立的无锁循环队列进行标志位调整;
S307、为预先设立的无锁循环队列添加一级指针,其中一级指针指向为下一无锁循环队列;本步骤中将预先设立的无锁循环队列中的一级指针修改为指向新无锁循环队列;
由此实现对预先设立的无锁循环队列的容量扩充。
2.如权利要求1所述的多机协同工作设备中高速数据流接收方法的系统,其特征在于,所述多机协同工作设备由一台上位机和设定数量的下位机组成,所述上位机采用所述系统接收所述设定数量的下位机传输的高速数据流;
所述系统安装在所述上位机中,包括接口驱动模块、临时缓存模块、内核独占接收模块、无锁缓存模块以及数据解析模块;
所述接口驱动模块,配置用于接收所述设定数量的下位机传输来的高速数据,并将所述高速数据存入所述临时缓存模块;
所述内核独占接收模块,配置用于执行当前数据接收线程,对所述临时缓存模块进行轮询检测,提取符合设定的判断条件的数据集合,传输至所述无锁缓存模块;所述设定的判断条件的初始设定为依据数据需求设定;
所述内核独占接收模块,还配置用于设置数据同步锁,在当前数据接收线程对所述存储的所述高速数据进行轮询检测时,采用数据同步锁阻止其他线程对所存储的所述高速数据的操作;
所述无锁缓存模块,配置用于对所述当前数据接收线程提取的数据集合采用无锁循环队列进行存储;
所述数据解析模块,配置用于读取所述无锁缓存模块存储的数据帧并进行数据解析。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810294147.4A CN108768760B (zh) | 2018-04-04 | 2018-04-04 | 一种多机协同工作设备中高速数据流接收方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810294147.4A CN108768760B (zh) | 2018-04-04 | 2018-04-04 | 一种多机协同工作设备中高速数据流接收方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108768760A CN108768760A (zh) | 2018-11-06 |
CN108768760B true CN108768760B (zh) | 2022-02-25 |
Family
ID=63981192
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810294147.4A Active CN108768760B (zh) | 2018-04-04 | 2018-04-04 | 一种多机协同工作设备中高速数据流接收方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108768760B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102074055A (zh) * | 2011-01-04 | 2011-05-25 | 浙江大学 | 基于多机协同架构的快速记录仪及自标定和多机协同方法 |
CN102307369A (zh) * | 2011-09-13 | 2012-01-04 | 北京科技大学 | 支持无线传感网并行仿真和实物模拟的装置及方法 |
CN107172037A (zh) * | 2017-05-11 | 2017-09-15 | 华东师范大学 | 一种多路多通道高速数据流的实时分包解析方法 |
CN107423240A (zh) * | 2017-07-28 | 2017-12-01 | 白宏刚 | 自学习式多主机同时读写串口下位机或总线数据的算法 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1172064A3 (en) * | 2000-07-13 | 2003-01-15 | Computer Motion, Inc. | Method and apparatus for accessing medical data over a network |
US6934952B2 (en) * | 2001-04-09 | 2005-08-23 | International Business Machines Corporation | Method and apparatus for managing multiple instances of server code on a machine |
CN106709013A (zh) * | 2016-12-26 | 2017-05-24 | 深圳市捷顺科技实业股份有限公司 | 数据处理方法及对应装置、数据交互方法及对应装置 |
-
2018
- 2018-04-04 CN CN201810294147.4A patent/CN108768760B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102074055A (zh) * | 2011-01-04 | 2011-05-25 | 浙江大学 | 基于多机协同架构的快速记录仪及自标定和多机协同方法 |
CN102307369A (zh) * | 2011-09-13 | 2012-01-04 | 北京科技大学 | 支持无线传感网并行仿真和实物模拟的装置及方法 |
CN107172037A (zh) * | 2017-05-11 | 2017-09-15 | 华东师范大学 | 一种多路多通道高速数据流的实时分包解析方法 |
CN107423240A (zh) * | 2017-07-28 | 2017-12-01 | 白宏刚 | 自学习式多主机同时读写串口下位机或总线数据的算法 |
Also Published As
Publication number | Publication date |
---|---|
CN108768760A (zh) | 2018-11-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10877766B2 (en) | Embedded scheduling of hardware resources for hardware acceleration | |
US9507688B2 (en) | Execution history tracing method | |
JP7230083B2 (ja) | 地図サービステスト用の方法及び装置 | |
CN104021043B (zh) | 批量应用程序的中断重入方法及系统 | |
CN101310255B (zh) | 用于检测处理系统中的存储器装置的配置的方法和设备 | |
CN109408450B (zh) | 一种数据处理的方法、系统、协处理装置和主处理装置 | |
CN104252405A (zh) | 日志信息的输出方法及装置 | |
US6971102B2 (en) | Computer system, memory management method, storage medium and program transmission apparatus | |
CN101478481B (zh) | 缓存管理方法及装置、数据转发系统 | |
CN102004678B (zh) | 操作系统性能分析方法及装置 | |
CN104317850A (zh) | 数据处理方法和装置 | |
CN110941553A (zh) | 一种代码检测方法、装置、设备及可读存储介质 | |
CN106020984A (zh) | 电子设备中进程的创建方法及装置 | |
CN108768760B (zh) | 一种多机协同工作设备中高速数据流接收方法及系统 | |
CN108170571B (zh) | 一种芯片追踪调试装置及方法 | |
US11409704B2 (en) | Method, device and computer program product for managing storage system | |
JP6252296B2 (ja) | データ識別方法、データ識別プログラム及びデータ識別装置 | |
CN106874191B (zh) | 智能数据库执行方法及系统 | |
CN109086231B (zh) | 输入输出设备的访问方法及装置 | |
CN110837412B (zh) | 一种作业就绪状态判断方法、装置、设备和存储介质 | |
CN115202946A (zh) | 自动化测试方法、装置、设备、存储介质及程序产品 | |
CN112069006B (zh) | 一种检测分析gpu速率状态的方法、装置及计算机可读介质 | |
WO2020140623A1 (zh) | 电子装置、元数据处理方法和计算机可读存储介质 | |
CN112231290A (zh) | 一种本地日志的处理方法、装置、设备及存储介质 | |
EP1999588A1 (en) | An apparatus, method and computer program product for generating trace data |
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 |