NI LabVIEW,CVI,数据采集等产品讨论区

取消
显示结果 
搜索替代 
您的意思是: 

请教一个多线程

请问各位大侠:
 
  LV里有没有多线程的例子(我没找到呢)
 或哪位大侠做过这方面的项目
请给我一个示例或帮助文档.
谢谢先
0 项奖励
1 条消息(共 5 条)
4,926 次查看
我的理解是,你在labview中画两个并行的loop,他们就是多线程了。你可以用timed loop去设置优先级等,labview中有例子。
Ryan Shi
National Instruments
0 项奖励
2 条消息(共 5 条)
4,916 次查看
若现有3个均为耗时的任务,他们在执行时互相关联。
这样行吗?
谢谢先
0 项奖励
3 条消息(共 5 条)
4,826 次查看
有多耗时?LV的多线程至少也是基于操作系统支持的条件下的。
耗时的任务还与CPU等硬件条件有关,这个很难说
只能试试吧
 
0 项奖励
4 条消息(共 5 条)
4,809 次查看
由于Labview的特点,很容易实现多任务或者多线程。例如上面所说的两个Loop, 只要它们之间没有数据依赖关系,他们就可以并行执行。

问题在于如何实现进程之间的协作。首先,Labview提供了执行控制机制,如信号灯, 利用这些机制,可以实现多个进程之间非常高级的通信。只是这些机制比较复杂,我没有在编程时正式使用过。

其实,有一些简单的办法可以有效地实现多个任务(进程)之间的通信。我一般使用Local Variable来解决这个问题。举一个例子:
   :进程A负责数据采集
   :进程B负责数据处理以及显示
   :进程A数据采集完成后,通知进程B;进程B开始处理和显示

这时,可以使用一个Local Variable, 称之为State。
   :程序开始运行时,State=0;
   :进程A获得数据后,将State=1;
   :进程B查询State,当State=1时,处理并显示数据;然后,将State=0;

需要注意的是,为了防止进程占用过多CPU时间,每个进程在循环中都要加入wait,具体时间看应用而定。

Labview语言功能强大,编程方法和其中蕴涵的乐趣也很多,希望大家都喜欢  -:)
 
0 项奖励
5 条消息(共 5 条)
4,757 次查看