多线程数据采集和处理?

时间:2022-11-27 18:34:42
一个数据采集线程和一个数据处理线程,比如数据采集线程采集完128个数据后,数据处理线程开始工作,数据处理线程处理完这128个数据后,数据采集线程再次工作,这样的话,感觉数据采集的话会丢失一部分数据啊(数据处理线程工作的时间段)?如何让这两个线程更合理的工作呢?

7 个解决方案

#1


可以使用两个缓冲区做乒乓式的采集处理模模式

#2


引用 1 楼 zgl7903 的回复:
可以使用两个缓冲区做乒乓式的采集处理模模式
您好,能不能说的详细点啊,我领会不了您的意思,惭愧了。。。谢谢啊

#3


采集线程 
 1 采集A缓冲区 -> 采集满提交A缓冲区给处理线程,
 2 采集B缓冲区 -> 采集满提交B缓冲区给处理线程,
 3   返回1

处理线程 
 1 等待处理A, 处理A
 2 等待处理B, 处理B
 3 返回1
   
   

#4


引用 3 楼 zgl7903 的回复:
采集线程 
 1 采集A缓冲区 -> 采集满提交A缓冲区给处理线程,
 2 采集B缓冲区 -> 采集满提交B缓冲区给处理线程,
 3   返回1

处理线程 
 1 等待处理A, 处理A
 2 等待处理B, 处理B
 3 返回1
我明白您的意思了,就是说处理A缓冲区的时候,同时在将采集数据放到B缓冲区;处理B缓冲区的时候,同时将采集的数据放到A缓冲区。   这里是不是就不用考虑同步的问题了,因为没有对同一缓冲区进行操作.

#5


你就这么考虑,如果距离水龙头10米处有一口大缸,现在要你用水桶把缸装满水你会怎么操作

#6


引用 5 楼 zgl7903 的回复:
你就这么考虑,如果距离水龙头10米处有一口大缸,现在要你用水桶把缸装满水你会怎么操作
您的意思是有两个桶了,那我的理解就是不用同步机制了,哈哈

#7


那如果要的是IdServer接收数据,我要用另一个线程来处理数据,那么我如何控制线程何时处理数据,因为idServer是每隔一会儿发过来,用这种方法肯定要同步。

#1


可以使用两个缓冲区做乒乓式的采集处理模模式

#2


引用 1 楼 zgl7903 的回复:
可以使用两个缓冲区做乒乓式的采集处理模模式
您好,能不能说的详细点啊,我领会不了您的意思,惭愧了。。。谢谢啊

#3


采集线程 
 1 采集A缓冲区 -> 采集满提交A缓冲区给处理线程,
 2 采集B缓冲区 -> 采集满提交B缓冲区给处理线程,
 3   返回1

处理线程 
 1 等待处理A, 处理A
 2 等待处理B, 处理B
 3 返回1
   
   

#4


引用 3 楼 zgl7903 的回复:
采集线程 
 1 采集A缓冲区 -> 采集满提交A缓冲区给处理线程,
 2 采集B缓冲区 -> 采集满提交B缓冲区给处理线程,
 3   返回1

处理线程 
 1 等待处理A, 处理A
 2 等待处理B, 处理B
 3 返回1
我明白您的意思了,就是说处理A缓冲区的时候,同时在将采集数据放到B缓冲区;处理B缓冲区的时候,同时将采集的数据放到A缓冲区。   这里是不是就不用考虑同步的问题了,因为没有对同一缓冲区进行操作.

#5


你就这么考虑,如果距离水龙头10米处有一口大缸,现在要你用水桶把缸装满水你会怎么操作

#6


引用 5 楼 zgl7903 的回复:
你就这么考虑,如果距离水龙头10米处有一口大缸,现在要你用水桶把缸装满水你会怎么操作
您的意思是有两个桶了,那我的理解就是不用同步机制了,哈哈

#7


那如果要的是IdServer接收数据,我要用另一个线程来处理数据,那么我如何控制线程何时处理数据,因为idServer是每隔一会儿发过来,用这种方法肯定要同步。