由于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,具体时间看应用而定。
用户377235 2012-11-4 16:02
用户377235 2012-10-15 12:57
用户1401813 2012-9-25 15:34
用户174417 2009-7-15 17:29
用户162253 2008-9-24 14:28
jizzll_617398179 2008-9-24 00:24
jizzll_617398179 2008-9-24 00:23
用户19725 2008-9-22 11:59
用户130492 2008-9-22 08:56
用户130492 2008-9-22 08:55