CN114064316A - 一种多路采集数据的同步方法及系统 - Google Patents
一种多路采集数据的同步方法及系统 Download PDFInfo
- Publication number
- CN114064316A CN114064316A CN202111356522.1A CN202111356522A CN114064316A CN 114064316 A CN114064316 A CN 114064316A CN 202111356522 A CN202111356522 A CN 202111356522A CN 114064316 A CN114064316 A CN 114064316A
- Authority
- CN
- China
- Prior art keywords
- acquisition
- data
- thread
- task
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 39
- 238000013500 data storage Methods 0.000 claims abstract description 71
- 230000001360 synchronised effect Effects 0.000 claims abstract description 64
- 230000000903 blocking effect Effects 0.000 claims description 30
- 238000007726 management method Methods 0.000 claims description 11
- 238000004364 calculation method Methods 0.000 claims description 7
- 230000005540 biological transmission Effects 0.000 claims description 2
- 230000007704 transition Effects 0.000 claims 2
- 230000004913 activation Effects 0.000 description 7
- 238000013480 data collection Methods 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 230000003993 interaction Effects 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000003213 activating effect Effects 0.000 description 1
- 238000011217 control strategy Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
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
-
- 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/542—Event management; Broadcasting; Multicasting; Notifications
Abstract
本申请公开一种多路采集数据的同步方法及系统,包括:创建一个守护线程、多个采集线程、以及一个同步线程;在任务队列中存在任务时,通过守护线程向空闲的采集线程分配任务,并发送数据采集信号;通过处于激活状态的采集线程,根据所分配的任务从对应的采集通道采集数据;将采集线程采集的数据分别存储到对应的采集数据存储队列中,其中,各采集数据存储队列分别与采集数据的通道一一对应;通过同步线程将属于同一时序特征的采集数据,放入同一输出队列中。通过采用多核心、多线程资源的合理调度和分配,确保数据采集短耗时;通过同步线程与采集线程的配合,将采集数据进行同步处理,保证多路采集的数据同步。
Description
技术领域
本申请属于视觉处理领域,尤其涉及一种多路采集数据的同步方法及系统。
背景技术
多路图像采集系统是指同时采用多个图像采集器进行图像采集的系统,例如,在动作捕捉系统中,可以利用多路图像采集系统采集目标物处于不同角度状态下的图像数据。
多路图像采集系统采用数据采集方式主要包括以下两种:第一种数据采集方式为通过串行架构,按照一定顺序进行数据采集,这种数据采集方式采耗时较长,因此,第一种数据采集方式在不计效率成本的情况下,数据流较少时可以勉强使用,但是,当数据流多且每部分数据流都比较大的情况下则不适用。为了解决第一种数据采集方式中的耗时较长的问题,提出了第二种数据采集方式,第二种数据采集方式为通过CPU多核并行架构,开辟多个线程进行数据采集,这样,相比于第一种数据采集方式,第二种数据采集方式能够减少耗时,但是,采用第二种数据采集方式,无法保证采集的多路图像数据同步。
因此,在多路图像数据采集时,如何保证数据采集短耗时以及多路采集数据同步,是目前亟需解决的技术问题。
发明内容
为解决在多路图像数据采集时,如何保证数据采集短耗时以及多路采集数据同步的技术问题,本申请提供一种多路采集数据的同步方法及系统。
第一方面,本申请提供一种多路采集数据的同步方法,包括:
创建一个守护线程、多个采集线程、以及一个同步线程;
在任务队列中存在任务时,通过所述守护线程向空闲的采集线程分配任务,并发送数据采集信号,其中,所述采集线程在接收到所述数据采集信号之后,由阻塞状态的所述采集线程转为激活状态;
通过处于激活状态的所述采集线程,根据所分配的任务从对应的采集通道采集数据;
将所述采集线程采集的数据分别存储到对应的采集数据存储队列中,其中,各采集数据存储队列分别与采集数据的通道一一对应;
通过所述同步线程将属于同一时序特征的采集数据,放入同一输出队列中;
其中,所述任务队列、采集数据存储队列和输出队列均存储于共享数据存储器中。
可选的,采用如下方法,确定所述任务队列中是否存在任务:
通过所述守护线程获取任务队列中任务数量,其中,所述任务队列中的任务数量采用原子计数的方式;
如果所述任务数量不为零,则确定所述任务队列中存在任务。
可选的,所述采集线程的初始状态为阻塞状态,直至所述采集线程接收到所述数据采集信号,所述采集线程转为激活状态;
在处于激活状态的采集线程完成数据采集任务后,所述采集线程重新转为阻塞状态。
可选的,在所述任务队列中不存在任务,或者,没有空闲的采集线程时,所述守护线程转为阻塞状态。
可选的,在所述通过所述同步线程将属于同一时序特征的采集数据,放入同一输出队列中的步骤之前,还包括:
在将所述采集线程采集的数据分别存储到对应的采集数据存储队列之后,通过所述采集线程向所述同步线程发送数据同步信号,其中,各采集线程发送的数据同步信号按照发送顺序存储在同步信号缓存队列中;
按照所述同步信号缓存队列中数据同步信号的发送顺序,通过所述同步线程依次从所述采集数据存储队列中获取采集数据。
可选的,所述同步线程在接收到所述数据同步信号之前为阻塞状态。
可选的,所述时序特征包括时码特性、帧号序列、或者时间戳。
可选的,所述任务队列包括任务写入入口和任务读取出口,其中,所述任务写入入口用于写入待处理任务,所述任务读取出口用于输出待处理任务;其中,如果所述任务写入入口正在写入数据,则通过所述任务写入入口向所述任务读取出口发送第一通知消息,所述第一通知消息用于禁止通过所述任务读取出口读取任务;如果所述任务读取出口正在读取数据,则通过所述任务读取出口向所述任务写入入口发送第二通知消息,所述第二通知消息用于禁止通过所述任务写入入口读写入任务。
第二方面,本申请还提供一种多路采集数据的同步系统,所述系统包括:
多任务管理计算模块,用于创建一个守护线程、多个采集线程、以及一个同步线程;在任务队列中存在任务时,通过所述守护线程向空闲的采集线程分配任务,并发送数据采集信号,其中,所述空闲采集线程在接收到所述数据采集信号之后,由阻塞状态的所述采集线程转为激活状态;通过处于激活状态的所述采集线程,根据所分配的任务从对应的采集通道采集数据;将所述采集线程采集的数据分别存储到对应的采集数据存储队列中,其中,各采集数据存储队列分别与采集数据的通道一一对应;
同步逻辑计算模块,用于通过所述同步线程将属于同一时序特征的采集数据,放入同一输出队列中;其中,所述任务队列、采集数据存储队列和输出队列均存储于共享数据存储器中。
可选的,所述多任务管理计算模块,还用于通过所述守护线程获取任务队列中任务数量,其中,所述任务队列中的任务数量采用原子计数的方式;在所述任务数量不为零时,确定所述任务队列中存在任务。
可选的,所述采集线程的初始状态为阻塞状态,直至所述采集线程接收到所述数据采集信号,所述采集线程转为激活状态;在处于激活状态的采集线程完成数据采集任务后,所述采集线程重新转为阻塞状态。
可选的,在所述任务队列中不存在任务,或者,没有空闲的采集线程时,所述守护线程为阻塞状态。
可选的,同步逻辑计算模块,还用于在将所述采集线程采集的数据分别存储到对应的采集数据存储队列之后,通过所述采集线程向所述同步线程发送数据同步信号,其中,各采集线程发送的数据同步信号按照发送顺序存储在同步信号缓存队列中;按照所述同步信号缓存队列中数据同步信号的发送顺序,通过所述同步线程依次从所述采集数据存储队列中获取采集数据。
可选的,所述同步线程在接收到所述数据同步信号之前为阻塞状态。
可选的,所述时序特征包括时码特性、帧号序列、或者时间戳。
可选的,所述任务队列包括任务写入入口和任务读取出口,其中,所述任务写入入口用于写入待处理任务待处理的任务,所述任务读取出口用于输出待处理任务;其中,如果所述任务写入入口正在写入数据,则通过所述任务写入入口向所述任务读取出口发送第一通知消息,所述第一通知消息用于禁止通过所述任务读取出口读取任务;如果所述任务读取出口正在读取数据,则通过所述任务读取出口向所述任务写入入口发送第二通知消息,所述第二通知消息用于禁止通过所述任务写入入口写入任务。
综上,本申请提供的多路采集数据的同步方法及系统,首先,通过多核心、多线程资源的合理调度和分配,保证数据采集短耗时;其次,本申请通过同步线程与采集线程的配合,将采集数据进行同步处理,确保了多路采集的数据同步。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供一种多路采集数据的同步方法的应用场景示意图;
图2为本申请实施例提供一种多路采集数据的同步方法的工作流程示意图;
图3为本申请实施例中步骤300对应的工作流程示意图;
图4为本申请实施例中步骤400对应的工作流程示意图;
图5为本申请实施例中步骤500对应的工作流程示意图;
图6为本申请实施例提供一种多路采集数据的同步系统的结构框图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
在本发明的说明书和附图中描述的一些流程中,包含了按照特定顺序出现的多个操作,但是应该清楚了解,这些操作可以不按照其在本文中出现的顺序来执行或并行执行,操作的序号如100、200等,仅仅是用于区分开各个不同的操作,序号本身不代表任何的执行顺序。另外,这些流程可以包括更多或更少的操作,并且这些操作可以按顺序执行或并行执行。
为便于对本申请技术方案的理解,首先对本申请技术方案的应用场景进行介绍。
如图1所示,应用场景中包括N个图像采集器,其中N为大于1的正整数,通过这N个图像采集器进行图像采集,然后通过处理器对N个图像采集器采集的图像数据进行数据处理。为了实现在上述多路图像数据采集场景中,数据采集短耗时以及多路采集的数据具有同步性,本申请提供一种多路采集数据的同步方法,主要包括数据的采集策略和数据的同步策略。
下面结合附图对本申请实施例提供的一种多路采集数据的同步方法进行介绍。
如图2所示,本申请实施例提供的一种多路采集数据的同步方法,包括如下步骤:
步骤100、创建一个守护线程、多个采集线程、以及一个同步线程。
首先需要说明的是,在共享数据存储器中建立有任务队列,通过任务队列将待处理的任务进行序列化,并且用来缓存待处理的任务,在本申请的应用场景中,待处理的任务即为对多个图像采集器进行的数据采集的任务。
根据任务处理需求,建立一定数量的线程形成线程池,其中,线程池中包括一个守护线程和多个工作线程,其中,多个工作线程根据执行的任务不同又分为多个采集线程和一个同步线程。本申请通过守护线程调度建立的线程池内的资源来执行工作任务。
步骤200、在任务队列中存在任务时,通过所述守护线程向空闲的采集线程分配任务,并发送数据采集信号,其中,所述空闲的采集线程在接收到所述数据采集信号之后,由阻塞状态的所述采集线程转为激活状态。
本申请对判断任务队列中是否存在任务的方法不进行限定,在一种实现方式中,可以通过守护线程获取任务队列中元素数量,其中,任务队列中的元素数量采用原子计数的方式;如果元素数量不为零,则确定所述任务队列中存在任务;如果元素数量为零,则确定所述任务队列中不存在任务。其中,任务队列的元素数量采用原子计数的方式,可以保证多线程调用时能够及时获取和更新最新的元素数量,从而使得守护线程能够及时根据元素数量调整调度策略。其中,在任务队列中,元素数量是指任务数量。
本申请实施例中,创建采集线程后,采集线程立即进入阻塞状态,而不会主动去获取任务队列中工作任务,直到守护线程唤醒采集线程,采集线程由阻塞状态转为激活状态,转为激活状态的采集线程才可以根据守护线程分配的工作任务,执行任务。
因此,在步骤200,如果任务队列中存在任务,则先通过所述守护线程向空闲的采集线程分配任务,并发送数据采集信号。其中,守护线程发送的数据采集信号用于唤醒对应的采集线程。
在守护线程分配任务时,多个采集线程中可能部分正在执行采集任务,此时,守护线程将采集任务分配给空闲的采集线程,即没有执行采集任务的采集线程;如果多个采集线程全部都在执行采集任务,没有空闲的采集线程,则守护线程可以转为阻塞状态,以释放守护线程占用的资源。
步骤300、通过处于激活状态的所述采集线程,根据所分配的任务从对应的采集通道采集数据。
空闲的采集线程在接收到守护线程发送的数据采集信号之后,由阻塞状态转为激活状态,每个被激活后的采集线程分别根据分配到的采集任务,进行数据采集工作。
其中,分配的采集任务指示各采集线程到对应的采集通道采集数据,即到对应的图像采集器1采集数据。
举例说明,如图3所示,任务队列中有三个采集任务,三个采集任务分别与图像采集器1、图像采集器2和图像采集器3对应,通过守护线程依次将三个采集任务分配给空闲的采集线程A、空闲的采集线程B和空闲的采集线程C,例如,分配给空闲的采集线程A的工作任务是采集图像采集器1对应的数据,分配给空闲的采集线程B的工作任务是采集图像采集器2对应的数据,分配给空闲的采集线程C的工作任务是采集图像采集器3对应的数据,这样,空闲的采集线程A被激活后,通过采集线程A采集与采集图像采集器1对应的数据;空闲的采集线程B被激活后,通过采集线程B采集与采集图像采集器2对应的数据;空闲的采集线程C被激活后,通过采集线程C采集与采集图像采集器3对应的数据。
步骤400、将所述采集线程采集的数据分别存储到对应的采集数据存储队列中,其中,各采集数据存储队列分别与采集数据的通道一一对应。
本申请中,采集线程与同步线程之间的数据交互是通过共享数据存储器实现的,在共享数据存储器中建立多个采集数据存储队列,通过采集线程向采集数据存储队列写入数据,通过同步线程从采集数据存储队列读取数据。其中,采集数据存储队列的数量与采集数据的通道数量相同,即采集数据存储队列的数量与图像采集器的数量相同,这样,每个图像采集器对应的数据可以被分别对应存储在各自的采集数据存储队列中。
举例说明,如图4所示,共享数据存储器中建立有三个采集数据存储队列,采集数据存储队列a、采集数据存储队列b和采集数据存储队列c,则通过采集线程A采集的与图像采集器1对应的数据,都存储在采集数据存储队列a中;通过采集线程B采集的与图像采集器2对应的数据,都存储在采集数据存储队列b中;通过采集线程C采集的与图像采集器3对应的数据,都存储在采集数据存储队列c中。
步骤500、通过同步线程将属于同一时序特征的采集数据,放入同一输出队列中。
为了保证多个图像采集器采集的数据具有同步性,本申请在处理器中增设了同步线程,通过同步线程将各采集数据存储队列中的数据进行同步处理。
具体的,采集到的数据均具有时序特征,如时码特性、帧号序列、或者时间戳等,这样,同步线程可以将各采集数据存储队列中属于同一时序特征的数据,放在同一输出队列中。
根据上述步骤400可知,同一采集数据存储队列中应该包括与该采集数据存储队列对应的图像采集器不同时刻的采集数据。例如,采集数据存储队列a中依次存储有图像采集器1在t1时刻、t2时刻、t3时刻……tn时刻采集的数据,其中,n为大于1的正整数;同样的,采集数据存储队列b中依次存储有图像采集器2在t1时刻、t2时刻、t3时刻……tn时刻采集的数据;采集数据存储队列c中依次存储有图像采集器3在t1时刻、t2时刻、t3时刻……tn时刻采集的数据。
进一步的,通过同步线程将采集数据存储队列a中的t1时刻的数据、采集数据存储队列b中的t1时刻的数据、采集数据存储队列c中的t1时刻的数据依次放到与t1时刻对应的输出队列中。可以采用同样的方式,通过同步线程将各采集数据存储队列种同一时刻的数据同步到对应的输出队列中,此处不再一一赘述。
本申请对步骤500的具体实现方式不进行限定,在一种实现方式中,包括如下步骤:
步骤510、在将所述采集线程采集的数据分别存储到对应的采集数据存储队列之后,通过所述采集线程向所述同步线程发送数据同步信号,其中,各采集线程发送的数据同步信号按照发送顺序存储在同步信号缓存队列中。
此处需要说明的是,同步线程的处理速度一般要远大于采集线程的处理速度,因此,可能存在同步线程等待采集线程完成采集任务的情况,这种情况下,为了避免同步线程占用资源,本申请可以将同步线程的初始状态设为阻塞状态,这样,就需要在采集线程将采集的数据存储到采集数据存储队列后,通过该采集线程向同步线程发送数据同步信号,以提醒同步线程到对应的采集数据存储队列获取采集数据。同步线程在接收到同步线程发送数据同步信号后,则由阻塞状态转为激活状态,进一步到对应的采集数据存储队列获取采集数据。
其中,每个采集线程将采集的数据存储到采集数据存储队列后,都会向同步线程发送数据同步信号,为了便于同步线程能够有序的从各采集数据存储队列中获取采集数据,本申请在共享数据存储器中建立一个同步信号缓存队列,这样,每个采集线程发送的同步信号可以按顺序缓存在同步信号缓存队列中,等待同步线程读取。
步骤520、按照所述同步信号缓存队列中数据同步信号的发送顺序,通过所述同步线程依次从所述采集数据存储队列中获取采集数据。
同步线程根据接收到的数据同步信号,可以知道是哪个采集线程发送的数据同步信号,而各个采集线程都对应有各自的采集数据存储队列,因此,同步线程可以根据接收到的数据同步信号,判断出到哪个采集数据存储队列中获取数据,这样,就可以根据同步信号缓存队列中数据同步信号的发送顺序,通过同步线程依次从对应的采集数据存储队列中获取采集数据。
举例说明,如图5所示,采集线程A将采集到的第一通道(即采集图像采集器1)的数据,存储到采集数据存储队列a中后,向同步线程发送的一个数据同步信号X;采集线程B将采集到的第二通道(即采集图像采集器2)的数据,存储到采集数据存储队列b中后,向同步线程发送的一个数据同步信号Y;采集线程C将采集到的第三通道(即采集图像采集器3)的数据,存储到采集数据存储队列c中后,向同步线程发送的一个数据同步信号Z,这样,在同步信号缓存队列中依次缓存有数据同步信号X、数据同步信号Y和数据同步信号Z。
按照各数据同步信号在同步信号缓存队列中排队顺序,首先,通过同步线程读取数据同步信号X,根据数据同步信号X,从采集数据存储队列a中获取采集数据;然后,通过同步线程读取数据同步信号Y,根据数据同步信号Y,从采集数据存储队列b中获取采集数据;最后,通过同步线程读取数据同步信号Z,根据数据同步信号Z,从采集数据存储队列c中获取采集数据。
步骤530、通过所述同步线程,将属于同一时序特征的采集数据,放入同一输出队列中。
如图5所示,本申请通过同步线程,将属于同一时序特征的采集数据,放入同一输出队列,这样,同一输出队列中包括同一时刻每个图像采集器采集的数据,从而实现将各图像采集器采集的数据同步。
在执行上述步骤530的过程中,先通过同步线程将采集线程已经采集到的部分数据同步到同一个输出队列中,等待其他没有采集到的同属于这一输出队列的数据;当等待时间超过预设时长后,如果当前输出队列中仍然存在空数据,则认为该空位置未采集到数据,视为丢帧数据;如果输出队列的数据采集完整,没有丢帧数据,则将这样的输出队列标记为完整数据,等待使用者读取。
另外,每当同步线程处理完同步信号缓存队列中所有数据同步信号对应的同步任务后,同步线程可以转为阻塞状态,直至再次接收到数据同步信号,同步线程再又阻塞状态转为激活状态。其中,同步线程判断同步信号缓存队列中是否存在待处理的同步任务的方法,也可以通过获取同步信号缓存队列中元素数量的方式,其中,同步信号缓存队列中的元素数量也可采用原子计数的方式。
需要说明的是,本申请实施例提供的多路采集数据的同步方法,基于共享数据存储器实现采集线程和同步线程的数据交互,其中,任务队列、采集数据存储队列、同步信号缓存队列和输出队列均建立在共享数据存储器中,这样,可以实现采集线程和同步线程的快速读取和写入数据。
进一步的,为了保证可以安全使用共享数据存储器读取和写入数据,本申请在共享数据存储器中的队列设置了写入入口和读取出口,其中,所述写入入口用于写入待处理任务或数据,读取出口用于通过采集线程或同步线程读取队列中任务或数据。
以任务队列为例,任务队列包括任务写入入口和任务读取出口,通过所述守护线程,从所述任务读取出口获取任务,并将所述任务分配给所述空闲的采集线程。如果所述任务写入入口正在写入数据,则通过所述任务写入入口向所述任务读取出口发送第一通知消息,所述第一通知消息用于禁止通过所述任务读取出口读取任务;如果所述任务读取出口正在读取数据,则通过所述任务读取出口向所述任务写入入口发送第二通知消息,所述第二通知消息用于禁止通过所述任务写入入口写入任务。这样,在守护线程想要从任务队列中获取任务时,可以通过判断当前任务写入入口的工作状态,确定当前时刻是否能够从任务队列中获取任务;类似的,在向任务队列中写入任务时,可以通过判断当前任务读取出口的工作状态,确定当前时刻是否能够向任务队列中写入任务。这样,便可以实现向工作队列中写入和读取任务的操作是互斥的,以保证任务的写入和读取的安全性。
综上,本申请实施例提供的多路采集数据的同步方法,首先,处理器采用多核心、多线程资源的合理调度和分配,具体的,可以采用条件变量的控制策略,当不满足线程资源占用的执行条件时,能够合理的运用阻塞机制和激活机制,及时让出处理器资源,可由系统自由分配资源处理其他工作,直到满足条件变量时,才开始调度和占用处理器资源,大大提高了处理器资源的利用率。其次,本申请通过同步线程与采集线程的配合,将采集数据进行同步处理,确保采集数据稳定同步。最后,本申请还采用了共享数据存储器,共享数据存储器提供的写入入口与读取出口,在保证线程安全、共享内存安全的情况下,能快速读取和写入数据资源。
如图6所示,本申请还提供的一种多路采集数据的同步系统,该系统包括多任务管理计算模块100和同步逻辑计算模块200。
其中,多任务管理计算模块100,用于创建一个守护线程、多个采集线程、以及一个同步线程;在任务队列中存在任务时,通过所述守护线程向空闲的采集线程分配任务,并发送数据采集信号,其中,所述空闲的采集线程在接收到所述数据采集信号之后,由阻塞状态的所述采集线程转为激活状态;通过处于激活状态的所述采集线程,根据所分配的任务从对应的采集通道采集数据;将所述采集线程采集的数据分别存储到对应的采集数据存储队列中,其中,各采集数据存储队列分别与采集数据的通道一一对应;
同步逻辑计算模块200,用于通过所述同步线程将属于同一时序特征的采集数据,放入同一输出队列中;所述任务队列、采集数据存储队列和输出队列均存储于共享数据存储器300中。
进一步的,所述多任务管理计算模块100,还用于通过所述守护线程获取任务队列中任务数量,其中,所述任务队列中的任务数量采用原子计数的方式;在所述任务数量不为零时,确定所述任务队列中存在任务。
进一步的,所述采集线程的初始状态为阻塞状态,直至所述采集线程接收到所述数据采集信号,所述采集线程转为激活状态;在处于激活状态的采集线程完成数据采集任务后,所述采集线程重新转为阻塞状态。
进一步的,在所述任务队列中不存在任务,或者,没有空闲的采集线程时,所述守护线程为阻塞状态。
进一步的,同步逻辑计算模块200,还用于在将所述采集线程采集的数据分别存储到对应的采集数据存储队列之后,通过所述采集线程向所述同步线程发送数据同步信号,其中,各采集线程发送的数据同步信号按照发送顺序存储在同步信号缓存队列中;按照所述同步信号缓存队列中数据同步信号的发送顺序,通过所述同步线程依次从所述采集数据存储队列中获取采集数据。
进一步的,所述同步线程在接收到所述数据同步信号之前为阻塞状态。
进一步的,所述时序特征包括时码特性、帧号序列、或者时间戳。
进一步的,所述任务队列包括任务写入入口和任务读取出口,其中,所述任务写入入口用于写入待处理任务,所述任务读取出口用于输出待处理任务;其中,如果所述任务写入入口正在写入数据,则通过所述任务写入入口向所述任务读取出口发送第一通知消息,所述第一通知消息用于禁止通过所述任务读取出口读取任务;如果所述任务读取出口正在读取数据,则通过所述任务读取出口向所述任务写入入口发送第二通知消息,所述第二通知消息用于禁止通过所述任务写入入口写入任务。
本申请实施例提供的多路采集数据的同步系统,通过共享数据存储器300存储多任务管理计算模块100和同步逻辑计算模块200处理得到的数据,并且,多任务管理计算模块100和同步逻辑计算模块200,通过共享数据存储器300实现数据交互。其中,多任务管理计算模块100主要用于对采集任务的管理与分配,通过合理的资源调度方法进行数据采集;同步逻辑计算模块200,主要用于对多任务管理计算模块100采集的数据,进行数据同步。
具体实现中,本申请实施例还提供一种计算机可读存储介质,其中,该计算机可读存储介质可存储有程序,该程序执行时可包括本申请提供的一种多路采集数据的同步方法及系统的各实施例中的部分或全部步骤。所述的存储介质可为磁碟、光盘、只读存储记忆体(read-only memory,ROM)或随机存储记忆体(random access memory,RAM)等。
本领域的技术人员可以清楚地了解到本申请实施例中的技术可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本申请实施例中的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例或者实施例的某些部分所述的方法。
本说明书中各个实施例之间相同相似的部分互相参见即可。尤其,对于系统的实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例中的说明即可。
以上结合具体实施方式和范例性实例对本申请进行了详细说明,不过这些说明并不能理解为对本申请的限制。本领域技术人员理解,在不偏离本申请精神和范围的情况下,可以对本申请技术方案及其实施方式进行多种等价替换、修饰或改进,这些均落入本申请的范围内。本申请的保护范围以所附权利要求为准。
以上所述的本申请实施方式并不构成对本申请保护范围的限定。
Claims (10)
1.一种多路采集数据的同步方法,其特征在于,包括:
创建一个守护线程、多个采集线程、以及一个同步线程;
在任务队列中存在任务时,通过所述守护线程向空闲的采集线程分配任务,并发送数据采集信号,其中,所述空闲的采集线程在接收到所述数据采集信号之后,由阻塞状态的所述采集线程转为激活状态;
通过处于激活状态的所述采集线程,根据所分配的任务从对应的采集通道采集数据;
将所述采集线程采集的数据分别存储到对应的采集数据存储队列中,其中,各采集数据存储队列分别与采集数据的通道一一对应;
通过所述同步线程将属于同一时序特征的采集数据,放入同一输出队列中;
其中,所述任务队列、采集数据存储队列和输出队列均存储于共享数据存储器中。
2.根据权利要求1所述的方法,其特征在于,采用如下方法,确定所述任务队列中是否存在任务:
通过所述守护线程获取任务队列中任务数量,其中,所述任务队列中的任务数量采用原子计数的方式;
如果所述任务数量不为零,则确定所述任务队列中存在任务。
3.根据权利要求1所述的方法,其特征在于,所述采集线程的初始状态为阻塞状态,直至所述采集线程接收到所述数据采集信号,所述采集线程转为激活状态;
在处于激活状态的采集线程完成数据采集任务后,所述采集线程重新转为阻塞状态。
4.根据权利要求1所述的方法,其特征在于,在所述任务队列中不存在任务,或者,没有空闲的采集线程时,所述守护线程转为阻塞状态。
5.根据权利要求1所述的方法,其特征在于,在所述通过所述同步线程将属于同一时序特征的采集数据,放入同一输出队列中的步骤之前,还包括:
在将所述采集线程采集的数据分别存储到对应的采集数据存储队列之后,通过所述采集线程向所述同步线程发送数据同步信号,其中,各采集线程发送的数据同步信号按照发送顺序存储在同步信号缓存队列中;
按照所述同步信号缓存队列中数据同步信号的发送顺序,通过所述同步线程依次从所述采集数据存储队列中获取采集数据。
6.根据权利要求5所述的方法,其特征在于,所述同步线程在接收到所述数据同步信号之前为阻塞状态。
7.根据权利要求1所述的方法,其特征在于,所述时序特征包括时码特性、帧号序列、或者时间戳。
8.根据权利要求5所述的方法,其特征在于,所述任务队列包括任务写入入口和任务读取出口,其中,所述任务写入入口用于写入待处理任务,所述任务读取出口用于输出待处理任务;
其中,如果所述任务写入入口正在写入数据,则通过所述任务写入入口向所述任务读取出口发送第一通知消息,所述第一通知消息用于禁止通过所述任务读取出口读取任务;
如果所述任务读取出口正在读取数据,则通过所述任务读取出口向所述任务写入入口发送第二通知消息,所述第二通知消息用于禁止通过所述任务写入入口写入任务。
9.一种多路采集数据的同步系统,其特征在于,所述系统包括:
多任务管理计算模块,用于创建一个守护线程、多个采集线程、以及一个同步线程;在任务队列中存在任务时,通过所述守护线程向空闲的采集线程分配任务,并发送数据采集信号,其中,所述空闲的采集线程在接收到所述数据采集信号之后,由阻塞状态的所述采集线程转为激活状态;通过处于激活状态的所述采集线程,根据所分配的任务从对应的采集通道采集数据;将所述采集线程采集的数据分别存储到对应的采集数据存储队列中,其中,各采集数据存储队列分别与采集数据的通道一一对应;
同步逻辑计算模块,用于通过所述同步线程将属于同一时序特征的采集数据,放入同一输出队列中;其中,所述任务队列、采集数据存储队列和输出队列均存储于共享数据存储器中。
10.根据权利要求9所述的系统,其特征在于,所述多任务管理计算模块,还用于通过所述守护线程获取任务队列中任务数量,其中,所述任务队列中的任务数量采用原子计数的方式;在所述任务数量不为零时,确定所述任务队列中存在任务。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111356522.1A CN114064316B (zh) | 2021-11-16 | 2021-11-16 | 一种多路采集数据的同步方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111356522.1A CN114064316B (zh) | 2021-11-16 | 2021-11-16 | 一种多路采集数据的同步方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114064316A true CN114064316A (zh) | 2022-02-18 |
CN114064316B CN114064316B (zh) | 2024-01-30 |
Family
ID=80272893
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111356522.1A Active CN114064316B (zh) | 2021-11-16 | 2021-11-16 | 一种多路采集数据的同步方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114064316B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114401461A (zh) * | 2022-03-22 | 2022-04-26 | 深圳市讯禾实业有限公司 | 基于物联网技术多路数据采集及存储系统 |
CN116483013A (zh) * | 2023-06-19 | 2023-07-25 | 成都实时技术股份有限公司 | 一种基于多通道采集器的高速信号采集系统及方法 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101739293A (zh) * | 2009-12-24 | 2010-06-16 | 航天恒星科技有限公司 | 一种基于多线程的卫星数据产品生产任务并行调度方法 |
CN103336458A (zh) * | 2013-05-15 | 2013-10-02 | 中国矿业大学(北京) | 采集时间控制模式下的多线程数据采集系统同步控制方法 |
CN104539931A (zh) * | 2014-12-05 | 2015-04-22 | 北京格灵深瞳信息技术有限公司 | 一种多目相机系统、装置及同步方法 |
CN104602095A (zh) * | 2014-12-26 | 2015-05-06 | 广东威创视讯科技股份有限公司 | 一种组合桌面采集与同步显示方法及系统 |
US20160041855A1 (en) * | 2013-04-08 | 2016-02-11 | Siemens Aktiengesellschaft | Method and apparatus for transmitting data elements between threads of a parallel computer system |
CN109936420A (zh) * | 2017-12-15 | 2019-06-25 | 上海蔚来汽车有限公司 | 用于同步由多个传感器采集的数据的方法和装置 |
CN111712800A (zh) * | 2019-07-01 | 2020-09-25 | 深圳市大疆创新科技有限公司 | 消息同步方法和装置、无人驾驶系统以及可移动平台 |
CN112468724A (zh) * | 2020-11-26 | 2021-03-09 | 上海思客琦智能装备科技股份有限公司 | 一种基于相机回调函数及多线程技术的图像采集处理方法 |
-
2021
- 2021-11-16 CN CN202111356522.1A patent/CN114064316B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101739293A (zh) * | 2009-12-24 | 2010-06-16 | 航天恒星科技有限公司 | 一种基于多线程的卫星数据产品生产任务并行调度方法 |
US20160041855A1 (en) * | 2013-04-08 | 2016-02-11 | Siemens Aktiengesellschaft | Method and apparatus for transmitting data elements between threads of a parallel computer system |
CN103336458A (zh) * | 2013-05-15 | 2013-10-02 | 中国矿业大学(北京) | 采集时间控制模式下的多线程数据采集系统同步控制方法 |
CN104539931A (zh) * | 2014-12-05 | 2015-04-22 | 北京格灵深瞳信息技术有限公司 | 一种多目相机系统、装置及同步方法 |
CN104602095A (zh) * | 2014-12-26 | 2015-05-06 | 广东威创视讯科技股份有限公司 | 一种组合桌面采集与同步显示方法及系统 |
CN109936420A (zh) * | 2017-12-15 | 2019-06-25 | 上海蔚来汽车有限公司 | 用于同步由多个传感器采集的数据的方法和装置 |
CN111712800A (zh) * | 2019-07-01 | 2020-09-25 | 深圳市大疆创新科技有限公司 | 消息同步方法和装置、无人驾驶系统以及可移动平台 |
CN112468724A (zh) * | 2020-11-26 | 2021-03-09 | 上海思客琦智能装备科技股份有限公司 | 一种基于相机回调函数及多线程技术的图像采集处理方法 |
Non-Patent Citations (2)
Title |
---|
OLEKSANDR SEMENIUTA等: "Flexible Image Acquisition Service for Distributed Robotic Systems", 《2018 SECOND IEEE INTERNATIONAL CONFERENCE ON ROBOTIC COMPUTING》 * |
刘家利等: "车载无人机的多路影像采集与拼接", 《传感器与微系统》 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114401461A (zh) * | 2022-03-22 | 2022-04-26 | 深圳市讯禾实业有限公司 | 基于物联网技术多路数据采集及存储系统 |
CN116483013A (zh) * | 2023-06-19 | 2023-07-25 | 成都实时技术股份有限公司 | 一种基于多通道采集器的高速信号采集系统及方法 |
CN116483013B (zh) * | 2023-06-19 | 2023-09-05 | 成都实时技术股份有限公司 | 一种基于多通道采集器的高速信号采集系统及方法 |
Also Published As
Publication number | Publication date |
---|---|
CN114064316B (zh) | 2024-01-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7549151B2 (en) | Fast and memory protected asynchronous message scheme in a multi-process and multi-thread environment | |
CN114064316A (zh) | 一种多路采集数据的同步方法及系统 | |
EP2701074B1 (en) | Method, device, and system for performing scheduling in multi-processor core system | |
CN109814985B (zh) | 一种任务调度方法及调度器、计算设备、系统 | |
CN104199730B (zh) | 一种基于同步i/o复用机制的单线程多任务处理方法 | |
CN102298539A (zh) | 一种用于分布式并行处理的共享资源调度方法及系统 | |
CN109697122A (zh) | 任务处理方法、设备及计算机存储介质 | |
Elliott et al. | Supporting real-time computer vision workloads using OpenVX on multicore+ GPU platforms | |
EP2581833A1 (en) | Multi-core processor system, control program, and method of control | |
KR101997816B1 (ko) | 동시 우선순위 큐에서 시퀀서를 이용하는 시스템 및 방법 | |
CN107818012B (zh) | 一种数据处理方法、装置及电子设备 | |
CN107515781B (zh) | 一种基于多处理器的确定性任务调度及负载均衡系统 | |
CN109117279B (zh) | 电子装置及其限制进程间通信的方法、存储介质 | |
CN112087503A (zh) | 集群任务调度方法、系统、计算机和计算机可读存储介质 | |
CN109542642A (zh) | 一种前端任务处理的方法及装置 | |
CN111338769B (zh) | 一种数据处理方法、装置及计算机可读存储介质 | |
CN112925616A (zh) | 任务分配方法、装置、存储介质及电子设备 | |
EP2171934A2 (en) | Method and apparatus for data processing using queuing | |
CN113472690A (zh) | 一种业务报文处理方法及装置 | |
CN114816777A (zh) | 命令处理装置、方法、电子设备以及计算机可读存储介质 | |
CN112214299A (zh) | 多核处理器及其任务调度方法和装置 | |
CN115981893A (zh) | 消息队列任务处理方法、装置、服务器及存储介质 | |
EP2413240A1 (en) | Computer micro-jobs | |
CN114661415A (zh) | 调度方法及计算机系统 | |
CN116680042A (zh) | 一种图像处理的方法及相关装置和系统 |
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 | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20230423 Address after: 418-436, 4th Floor, Building 1, Jinanqiao, No. 68 Shijingshan Road, Shijingshan District, Beijing, 100041 Applicant after: Beijing Yuanke Fangzhou Technology Co.,Ltd. Address before: 100094 701, 7 floor, 7 building, 13 Cui Hunan Ring Road, Haidian District, Beijing. Applicant before: Lingyunguang Technology Co.,Ltd. Applicant before: Shenzhen Lingyun Shixun Technology Co.,Ltd. |
|
TA01 | Transfer of patent application right | ||
GR01 | Patent grant | ||
GR01 | Patent grant |