所有线程管理的复杂任务在LabVIEW执行系统中都是透明的。基于文本程序设计的程序员必须学习新的复杂的编程方法来创建多线程应用程序。但是所有LabVIEW应用程序都可自动进行多线程化,无需修改任何代码。

除了操作系统的抢占式多任务处理,LabVIEW还采用了协同式多任务系统。在编译过程中,LabVIEW将分析VI查找可以同时运行的节点组合,这种节点组合也称为程序块。每个优先级和执行系统的组合都有一个运行队列数据结构,以保留哪些程序块能够一起运行。执行系统在激活一个线程的同时会从运行队列中重新找回并执行这个程序块。执行系统完成执行后,将存储其他的队列中符合输入条件的程序块,允许程序框图在4个可执行线程中的任何一个线程上执行。如果程序框图包含足够的并行机制,它可以在所有线程上同时执行。

LabVIEW不能永久地给一个特定的线程分配程序块代码。下次运行VI时,LabVIEW将以不同的线程执行程序块。

下列程序框图上的红色长方形显示了LabVIEW如何将节点组合为程序块。

在该例中,程序框图由三个程序块组成,输入控件的程序块与显示控件的程序块是一样的。因此,该程序块在两个时间点执行。程序块在执行前后会进入休眠或延迟状态。左边第一个程序块开始执行后,第一个程序块即开始休眠,其他两个For循环程序块开始执行。VI准备开始执行显示控件程序块时,左右两个程序块停止休眠。