原创 LabVIEW的多线程

2008-7-3 22:04 4284 3 4 分类: 测试测量
在labview中画两个并行的loop,他们就是多线程了。你可以用timed loop去设置优先级等


由于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,具体时间看应用而定。 

文章评论1条评论)

登录后参与讨论

用户1590236 2012-6-20 10:19

这样的确可以实现,但是进程B是通过轮询的方式完成数据处理,这样在不需要运行时也在占用CPU。如果通过队列或者事件的方式在不需要执行时线程休眠,会提高效率和CPU利用率。
相关推荐阅读
jizzll_617398179 2010-02-08 10:53
正确理解A/D转换器的输入
http://www.freescale.com.cn/tech_ariticles/2005/1102_1.asp 许多嵌入式应用都会用到A/D转换器。然而,如果错误连接了A/D转换器输入端的电路,...
jizzll_617398179 2010-01-12 13:37
好久没来,都长草了
好久没来,都长草了,呵呵。整天忙得很,不过估计再过两个月会轻松点~\(≧▽≦)/~啦啦啦...
jizzll_617398179 2009-03-16 21:57
很奇怪,我收到站内信,但是却找不到发信人呢
发信人是个[],点击就跳到我自己的主页了。只好在这里给那位朋友留言了。 我不知道你说的哪篇文章,还有我也不知道你的EDN的ID。你可以在博客上面留言的。...
jizzll_617398179 2009-03-14 13:08
如何在EXCEL中使用16进制数
最近需要计算串口发送的数据,太多而且比较麻烦。知道EXECL功能强大,所以网上找了找,刚好,不错,很方便。网上找到的http://hi.bccn.net/space-99452-do-blog-id-...
jizzll_617398179 2009-03-05 14:37
〖常识〗不同晶振的最大波特率及其误差
最近犯了个错误,呵呵,晶振和波特率的问题,特查了记在这里,O(∩_∩)O~〖常识〗不同晶振的最大波特率及其误差http://www.aoxue.org/bbs/read.php?tid=65585不同...
jizzll_617398179 2009-02-11 14:30
大端模式和小端模式
转载http://www.cnblogs.com/TsuiLei/archive/2008/10/29/1322504.html大端格式:在这种格式中,字数据的高字节存储在低地址中,而字数据的低字节则...
我要评论
1
3
关闭 站长推荐上一条 /2 下一条