firebolt:你这个应该采用“生产/消费”模型,数据采集线程把采集到的数据放到一个队列里,融合线程从队列中读取数据并处理。队列需要一个或两个条件变量(队列满,队列空),如果队列满,阻塞采集线程,如果队列空阻塞融合线程。数据量大用线程消息不合适。 (2017-01-15 18:09)
curiosity:我之前也想到过用“生产者/消费者”模式,好像要用QWaitCondition来处理是吗?主要是不太熟悉这种用法,看了Qt官方的例子和解释文档之后也是挺懵的。那如果把采集线程的数据放到一个队列里,队列是用一个数组来存储吗?那这个数组的长度应该多少合适,那我的两个采集线程——毫 .. (2017-01-15 19:22)
firebolt:我现在做的项目和你这个差不多,我采集线程把DDC信号做FFT后,发送给一个dispatch线程根据设定频率分割给不同的子窗口做显示。我的做法是在dispatch线程里保存一个最新的副本,run函数wait一个条件变量,如果副本发生变化,我就做处理,否则就等待。程序结构大概是这样的。class .. (2017-01-15 20:33)
firebolt:1、互斥是肯定会发生的,但是我的采集线程不会阻塞,我有个缓冲队列。你如果不想阻塞采集线程 可以判断一下上一次数据是否处理结束了,如果没有就直接返回。2、你可以用两个互斥锁给两个不同的数据用,条件变量可以用一个,看哪个数据比较关键就给哪个 .. (2017-01-16 11:38)