您的位置 首页 分销

LabVIEW程序设计形式(五)—生产者/顾客形式(2)_VI的可重入性

在介绍VI的动态调用之前有必要对LabVIEW在执行VI过程中的规则有个大致的了解。众所周知,LabVIEW是通过VI的文件名(VIName)来表示独立的

在介绍VI的动态调用之前有必要对LabVIEW在履行VI进程中的规矩有个大致的了解。众所周知,LabVIEW是经过VI的文件名(VI Name)来表明独立的VI的,并不是VI的途径。因而,LabVIEW不允许具有相同姓名的VI一起载入内存中,即便这些VI存储在不同的途径中。
在前面从前说到,LabVIEW自身便是一种多线程规划的言语。那么当同一背面板中放置两个VI的实例时代码应该怎么履行呢?在图 29中,右侧是测验VI运转的时刻,左边是Wait.vi的详细完成代码,仅仅是等候必定的秒数。那么在右侧的VI中,输出的Time是多少呢?是3秒仍是2秒?


图 29 Reentrant Execution
翻开VI的Highlight调试东西,能够看出两个Wait.vi实例的调用并不是一起履行的,而是顺次按次序履行的,至于哪一个实例先履行是不确定的。这是因为LabVIEW自身是并行规划的,从理论上而言,两个VI的实例是同步履行的,可是假如两个Wait.vi实例一起履行必定会发生参数赋值紊乱,因为LabVIEW只允许内存中存在一个称号的VI。因而,此刻Time的输出结果是3秒。
假如在实践运用中需求这样的运用该怎么处理呢?LabVIEW供给了VI的可重入技能,翻开Wait.vi,单击按键,挑选图 30所示的Reentrant execution选项。此刻再次运转Time的输出结果是2秒。从Highlight的运转进程来看,两个Wait.vi实例是一起履行的,因而总的运转时刻便是1秒。


图 30 VI Properties
事实上,LabVIEW的可重入技能相当于在原有VI的基础上发生了一个相同的副本,翻开Wait.vi从标题栏能够看出VI的称号为Wait.vi:1(clone)。同理这是因为LabVIEW中不允许内存中的VI存在同名,VI的可重入技能相当于发生了与原VI具有相同功用的新VI而且修改了该VI的命名。
在实践运用中,需求依据状况决议是否设置VI的可重入特点,灵敏运用。并不是需求将一切的VI都设置为可重入,那将占有很多的内存资源。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/bandaoti/fenxiao/212316.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部