微波EDA网,见证研发工程师的成长!
首页 > 测试测量 > 测试测量技术文库 > LABVIEW的深入探索之全局变量的优劣

LABVIEW的深入探索之全局变量的优劣

时间:01-09 来源:互联网 点击:

据拷贝。这会引发数据竞争。

第三,通过LV2全局变量,LV2的命名是根据变量出现的LABVIEW版本号,也有称作功能全局变量、函数全局变量或者USR全局变量。LV2全局变量是由一个仅循环一次的VI构成的,循环结构中包含未初始化的移位寄存器(USR)--USR用于在多次运行VI之间保持值。如果该VI设置成不重入方式,那么在不同位置多次调用这个VI时,USR可以共享数据。

LV2全局变量的优点是只存在一个数据拷贝,而且是内在的锁定机制。另外的优势在于可以通过添加代码提高它的性能,因为可以用于拥有自己的存储值,这是非常有用的。

第四,利用队列(高级函数选板,同其它同步函数在一起)。队列的常规用法是在队列中保存产生的数据,但是队列也有一种特殊的方法,使用队列作为全局变量。这种方式队列中只保存一个元素,每次调用队列开始时要取出元素,此时其它要使用队列的地方必须等待,直至正在调用队列的VI完成,把元素加入队列。利用队列构建的全局变量速度高于LV2全局变量,但是比内置的全局变量慢。

使用全局变量时,有几点必须指出,供参考。

1、打断了数据流。这是非常重要的一点,因为打断了数据流会导致程序难于理解,难于调试和排错。

2、竞争。当有多个位置写入全局变量时,非常容易导致数据丢失。

------------------------------------------------------------------------------------------------------------------

BEN:

使用全局变量对于大型应用程序的开发和升级非常危险。我再次强调全局变量是魔鬼,是魔鬼。

---------------------------------------------------------------------------------------------------------------------------

TBOB:

我再次重复几周前说过的话,全局变量不是魔鬼,不恰当地使用全局变量才是魔鬼。

我已经在测试测量领域开发了一些大型应用程序,我利用全局变量保存所有仪器的GPIB地址和PCI卡的名称,这些东西绝对不会在运行中写入,总是在读取。我就不明白了,这种情况下我用全局变量有错吗?

某些情况下,全局变量对简化程序是必须的。我使用全局变量类似于C语言的常量定义。

-----------------------------------------------------------------------------------------------------------------------

RAY:

我偶尔会使用全局变量,使用场合与TBOB类似。

----------------------------------------------------------------------------------------------------------------------

TBOB:

我曾经使用INI文件或者配置文件保存配置数据,但是每次读取它们非常繁琐,而且每当我需要读取一个仪器的GPIB地址时,速度很慢。如果使用文件,我通常在程序开始时读取文件,然后把配置数据保存在WORM全局变量(写一次,读任意)中,在状态机中使用它们。

--------------------------------------------------------------------------------------------------------------------------

BEN:

周末我又考虑一下全局变量的问题。

WORM GLOBALS(写一次,读多次)----------在你是程序开发者而且只有你是程序开发者的情况下是安全的。

------------------------------------------------------------------------------------------------------------------------------

TBOB:

很现实的想法,BEN.我只有在常量的情况或者WORM GLOBALS时才使用全局变量。技巧就是对于我的继任者,也告诫他们和采用同样的做法。

------------------------------------------------------------------------------------------------------------------------------

TBOB:

------------------------------------------------------------------------------------------------------------------------------

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top