一、什么是执行系统
早期 LabVIEW 的 VI 都是单线程运行的,LabVIEW 5.0 后才引入了多线程运行。
其实,对于并排摆放的LabVIEW 函数模块而言,即使LabVIEW 不为它们分配不同的线程,通常也是“并行执行”的。LabVIEW 会把它们拆成片断,轮流执行。
这有一点像是 LabVIEW 为自己设计了一套多线程调度系统,在系统的单个线程内并行执行多个任务。
LabVIEW 中这样一套把 VI 代码调度、运行起来的机制叫做执行系统。
LabVIEW 2010共设有7个执行系统,分别是:
1、用户界面
程序中所有与界面相关的代码都是放在用户界面执行系统下执行的。
就算你为一个 VI 设置了其他的执行系统,这个 VI 的前面板被打开后,他上面的数据更新的操作也会被放在用户界面执行系统下运行。
还有一些工作,比如利用 Open VI Reference 节点动态的把一个 VI 加载到内存的工作,也是在用户界面执行系统下运行的。
因为 LabVIEW 是自动多线程的,如果一些模块不能保证多线程安全,就需要把他们设定为在用户界面线程运行。这样就等于强制他们在同一个线程下执行,以保证安全。
2、标准
是最常用的配置方式.
3、仪器I/O
一般用于发送命令到外部仪器,或从仪器中读取数据。这是程序中较为重要的操作,需要及时运行。所以仪器I/O执行系统中的线程的优先级比其他执行系统中的线程要高一些。
4、数据采集
一般用于快速数据采集。数据采集执行系统中的线程的数据堆栈区比较大。
5、其它1
6、其它2
如果你一定要让某些 VI 运行在独立的线程内,则可以使用其他1、其他2这两个选项。
7、与调用方相同
表示这个 VI 沿用调用它的上层 VI 设置的执行系统。如果顶层 VI 也选择“与调用方相同”,那么就等于它选择了标准执行系统。
一个应用程序中使用到的众多子VI可以是分别放在不同的执行系统里运行的。用户在VI属性面板上选择 Execution页面,可以在这个页面指定或更改某个 VI 的首选执行系统。
具体操作是:
》文件》VI属性》执行》设置首选执行系统
通常所创建的VI其默认执行系统是:与调用方相同。
绝大多数情况下,用户使用界面执行系统、标准执行系统就已经足够了。
二、执行系统与线程的关系
LabVIEW 在支持多线程以后,不同的执行系统中的代码肯定是运行在不同线程下的。
用户界面执行系统只有一个线程,并且是这个程序的主线程。
这一点与其他执行系统都不一样,其他的执行系统都可以开辟多个线程来执行代码。
用户除了可以设置 VI 的执行系统,还可以设置它的优先级。
优先级分 5 个档次(暂先不考虑 subroutine)。
在 LabVIEW 7.0 之前, LabVIEW 在默认情况下为同一个执行系统下每个档次的优先级开启一条独立的线程;
而在LabVIEW 7.0 之后,LabVIEW 在默认会默认的为每个执行系统下每个档次的优先级开启 4 条线程。
在用 C 语言编写多线程程序时,你还要注意不能开辟太多的线程,因为线程开辟、销毁、切换等也是有消耗的。线程太多可能效率反而更差。
但是使用 LabVIEW 就方便多了。在使用默认设置的情况下,LabVIEW 最多为你的程序开辟 5 条线程:一条用户界面线程,四条标准执行系统标准优先级下的线程。五条线程不会引起明显的效率损失。
来源:http://blog.sina.com.cn/s/articlelist_1289595790_0_1.html
使用执行系统和优先级的建议(官网):
https://zone.ni.com/reference/zhs-XX/help/371361R-0118/lvconcepts/suggestions_for_exec/
相关文章
- 03-25【LabVIEW】的执行系统(线程)
- 03-25LabVIEW基于机器视觉的实验室设备管理系统(3)
- 03-25基于LabVIEW的交通灯系统设计毕设论文
- 03-25Qt 控制线程的顺序执行(使用QWaitCondition,并且线程类的run函数里记得加exec(),使得线程常驻)
- 03-25Qt中暂停线程的执行
- 03-25如何为自己的pip包打造可以执行的系统命令
- 03-25操作系统中的进程同步与Window中利用内核对象进行线程同步的关系
- 03-25类加载及执行子系统的案例与实战
- 03-25多线程执行顺序诡异现象谈,你不知道的pthread_create
- 03-25你知道吗?多个类多线程环境下静态构造函数的执行顺序