标题:利用多线程进行数据采集?
只看楼主
喜鹊王子
Rank: 1
等 级:新手上路
帖 子:105
专家分:0
注 册:2012-12-25
结帖率:89.74%
已结贴  问题点数:20 回复次数:2 
利用多线程进行数据采集?
对于大量数据的采集,要实现数据采集、显示、绘制曲线;
A. 如果采用单线程的话,数据采集、显示、绘制曲线依次执行,即采集一个数据后便显示和绘图;
B. 如果采用多线程的话,微观上来讲,一个时刻只能有一个线程在运行,假设采用两个线程:(1)数据采集线程和(2)显示、绘图线程,在数据采集线程中sleep()后,执行显示、绘图线程,岂不是延长了整个程序的执行时间,因为多了sleep()这个时间,如何讲提高了效率呢。

是不是我的理解有错误呢?对于这种大量数据采集的系统,要实现上述功能,如果要提高效率,该如何利用多线程?
搜索更多相关主题的帖子: 数据采集 sleep 如何 
2013-03-02 09:45
yuccn
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:何方
等 级:版主
威 望:167
帖 子:6809
专家分:42393
注 册:2010-12-16
得分:10 
一般来说 对于采点和绘图,都分成多个线程来工作的了,主要的一个原因,逻辑上独立,还有就是 工作(采点)线程不会影响ui(绘图)线程,这样就不会卡住界面



我行我乐
我的博客:
http://blog.yuccn. net
2013-03-02 11:55
玩出来的代码
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:河南新乡
等 级:贵宾
威 望:11
帖 子:742
专家分:2989
注 册:2009-10-12
得分:10 
最好的是分开多线程处理,之一就如楼上说的不会因为采集缓慢或卡住而影响绘图,或者因为绘图过慢而影响采集造成丢失数据。
在单核上一个时刻只能有一个线程在运行,不过CPU在线程上的切换开销是很小的。而多核计算机就不存在这个问题了。
若在采集的过程中可能有大量的空循环可用sleep(0)试下。大量的空循环也是很费CPU的。
这种问题最主要的是保住来源的正确性。若才数据源处就有数据丢失,那后续的处理就毫无意义了。

离恨恰如春草,更行更远还生。
2013-03-04 17:27



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-399507-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.011915 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved