基于多线程的数据采集的问题!!!!!!
本帖最后由 kobymeers 于 2011-3-21 10:09 编辑我的问题是这样的,希望大虾指点!: 我要 做一个基于多线程的四路并行数据采集并处理和显示程序,看了一些多线程的资料,三种多线程的数据保护方法中基本确定用线程安全队列的方法,在多线程的两种机制的选择中我却犯了难。CVI提供了两种多线程的机制:线程池和异步定时器。线程池可以并行执行多个回调函数但是不能循环调用,异步定时器可以循环调用一个程序里的所有给它的回调函数,但看书上说的感觉异步定时器不能并行执行多个函数。
问题来了,我原来做这个四路并行数据采集并处理和显示程序是用的CVI自带的普通的同步定时器就是那个TIMER控件,就是要四路并行且每隔一段时间采集一次数据,然后处理和显示数据,采集处理显示都在一个TIMER里,所以出现了数据采集延迟的现象,现在想用多线程解决这个问题,如上所述:CVI提供的两种多线程的机制中我该选哪个呢?
****线程池可以并行执行多个回调函数但是不能循环调用,异步定时器可以循环调用一个程序里的所有给它的回调函数,但看书上说的感觉异步定时器不能并行执行多个函数。 貌似我应该用异步定时器,但如何能用它实现并行执行四路的数据采集呢?!请高人指点~~~
NewAsyncTimer (((double)g_msDelay) / 1000.0, count,
enabled, MyTimerCallback, NULL); //这是建立异步定时器的函数
我想能不能在一个程序里建立4个AsyncTimer呢?没用过,不知道啊。
咱俩是同一个问题,我是2个串口同时执行,也没有头绪,希望有高人指点下 怎么没人顶呢 Lady GaGa
Michael
Jackson
vitas
Justin Bieber
Avril Lavigne
Westlife
Backstreet Boys
Linkin Park
Britney Spears
Eminem
Akon
Groove Coverage
Shakira
Mariah Carey
Taylor Swift
Black Eyed Peas
Katy Perry
Blue
Rihanna
Lenka
Sarah Connor
Madonna
Sarah Brightman
Celine Dion
Green Day
Usher
Alizee
owl city
Enya
Amy Diamond
Christina
Aguilera
Alicia Keys
Miley Cyrus
One Republic
Jennifer Lopez
2Pac
Maria Arredondo
Adam Lambert
U2
Timbaland
Norah Jones
50 Cent
Lene Marlin
回复 DUODUO123 的帖子
楼上的你在干嘛?!= = 二楼的相对容易,串口慢,你完全可以顺序执行。再各定义一个串口事件。 异步定时器应该可以多个。因为它有一个让所有定时器废弃的函数,如果不是可以同时执行,它这个函数就没有存在的必要性,你需要去编一个简单程序尝试一下。 回复 胆生毛 的帖子
我试了,如果采用线程池,有个一个主线程和四个数据采集的次线程,在资源管理器里可以看出来但是用异步定时器的函数创建四个异步定时器,在资源管理器里还是只有2个线程啊。。。。所以我觉得CVI里只会调用一个异步定时器去执行回调
我是用一个主线程,两个次线程
主线程管理这两个次线程,但是这两个次线程执行中还不是同步的?
这是怎么回事? 楼主
我短信你了
回复 goldramer 的帖子
想让两个次线程同步最好还是用线程池的方式做
页:
[1]