LabVIEW使用数据引用减少内存

概览 NI LabVIEW 省略了 开发 软件时 需要 手动 管理 内存。LabVIEW 编译器 始终 会 分析 您 的 代码, 以 确定 如何 优 化 性能 并 减少 所需 的 内存 量。但是, 想要 更多 控制 内存 分配 的 高级 用户 可以 在 LabVIEW 2009 中创建 数据 引用。

内容

  • 背景

  • 基本示例

  • 对类使用引用

  • 其他资源

背景 分支 线路 通常 要求 LabVIEW 在 线路 上 创建 数据 的 副本。如果两个分支都修改该值,或者如果一个分支在使用原始值完成之前修改该值,则始终如此。使用 LabVIEW 工具 中的 “显示 缓冲 器 分配” 选项 来 突出显示 编 譯 器 将 分配 额外 内存 的 位置。 返回页首 基本示例 “新建数据值引用”节点将任何数据作为输入,并创建对数据的引用。请注意,如果数据被分叉并在其他地方使用,则仍可能发生复制。

编辑

添加图片注释,不超过 140 字(可选)

图1.“新建数据值引用”节点创建对数据的引用,可用于以序列化方式传输和访问数据。 两个新节点可用于就地元素结构,以对数据进行操作,并在原始内存位置替换数据。同一个VI中可以存在多个就地元素结构,但一次只能对来自参考的数据进行操作,因为它们是阻塞函数以防止竞争条件。

编辑切换为居中

添加图片注释,不超过 140 字(可选)

图2.此VI代码段说明了如何使用此功能的示例。要在LabVIEW 2009中尝试此示例,请将图像拖到框图中。 为了帮助您理解此图,请考虑下图中显示的各个组件:

  1. 为其创建引用的数据的值为 5。

  2. “新数据值”Reference.vi 为这位数据创建引用。

  3. 这是数据引用的常量外观的示例。

  4. 就地元素结构具有一对用于数据值引用读/写的节点,分别用于取消引用和重新引用数据。此结构阻止执行使用相同引用的其他结构,直到它完成并且数据被重新引用。

  5. 如果引用无效,则数据值引用读取节点的错误输出线为“True”。您还将从写入值引用节点收到此工作,因此您不必合并这些错误。

  6. “删除数据值”Reference.vi 结束引用的生存期并返回最后一个已知值。

  7. 这是前面板指示器的终端示例。

错误处理 如果 您 需要 同时 获取 多个 参考, LabVIEW 将 在 结构 边界 处 等待, 直到 获取 了 所有 参考 源。如果任何引用是错误的引用,则必须将所有错误合并在一起,然后才能知道是否要执行任何工作。 返回页首 对类使用引用 可以将数据引用用于任何数据类型,包括类。LabVIEW 类 具有 分层 关系, 对 类 的 引用 模拟 该 层次 结构。换句话说,期望父类引用的子VI可以传递子类引用。 LabVIEW 类 的 配置 选项 可 让 您 能够 限制 创建 和 销毁 对 类 成员 VI 的 引用。您可以保证,只要您在任何其他VI的图上遇到该类型,对该类的任何引用都是通过正确的初始化方法定义的。

编辑

添加图片注释,不超过 140 字(可选)

图3.您 可以 从 LabVIEW 类 的 属性 对话框 中 限制 对 类 的 引用 的 创建 和 删除。 如果类被标记为只有成员VI可以为该类创建引用,那么当您尝试在任何其他VI的图上创建对该类类型的引用时,New Data Reference函数就会中断 - 默认情况下启用此功能。不能限制对类的集群或类的数组的引用。 必须在运行时维护引用的类型,这意味着不能交换数据值。借助 新的 保留 运行 时间 Class.vi 基元, LabVIEW 可以 保证 运行 时间 类型 的 一致性, 您 可以 使用 该 来 交换 两个 值。如果需要允许您更改基础对象的类引用,请创建对该类的集群的引用。这使您能够以分层强制转换为代价交换值。

编辑

添加图片注释,不超过 140 字(可选)

图4.“保留运行时 Class.vi”使您能够交换不同引用的值。 第二个选项允许父类成为所有后代类型引用的独占工厂,默认情况下禁用。该限制的工作方式与对类本身的引用的限制相同。 如果您有子类的数据引用,则可以使用“到更多”Generic.vi 向上转换为父类引用。同样,以后可以使用“到更多”Specific.vi 将引用恢复为原始类型。当您将 ref-to-child-class 连线连接到 ref-to-parent-class 终端时,会出现向上投射强制点。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/20022.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spring cloud alibaba 整合 Sentinel

Sentinel详解 Docker安装1、拉取镜像2、运行容器访问 整合 spring-cloud-alibaba1、引入Maven依赖2、配置控制台3、编写控制器4、启动Sentinel访问自定义异常处理统一异常处理 整合 OpenFeign引入Maven依赖: 配置:编写 Feign 实现指定 Feign 容错类控制器…

Dubbo分布式服务框架,springboot+dubbo+zookeeper

一Dubbo的简易介绍 1.Dubbo是什么? Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案。 简单的说,dubbo就是个服务框架,如果没有分布式的需求,其实是不需…

leetcode:寻找数组的中心下标

寻找数组的中心下标 easy 给你一个整数数组 nums ,请计算数组的 中心下标 。 数组 中心下标 是数组的一个下标,其左侧所有元素相加的和等于右侧所有元素相加的和。 如果中心下标位于数组最左端,那么左侧数之和视为 0 ,因为在下标…

Keil软件激活

首先下载好Keil.rar压缩包 然后关闭本机自带的杀毒软件 然后解压rar压缩包 假定Keil软件已经安装好,这里我就不详述Keil软件的安装过程了 以管理员身份打开Keil软件 打开Keil软件后 ,点击如图所示位置 License Management 进入解压之后的文件夹&#x…

LLM InternLM-Chat-7B书生模型、Baichuan-13B-Chat百川模型简单使用

指定GPU运行: #方式一 (两行必须放在import torch前面) #import os # os.environ[CUDA_VISIBLE_DEVICES] 5#方式二(第一种不生效用这种,我这边这种可以生效) #import torch #torch.cuda.set_device(5)1、…

设计模式之模板方法实现抽奖功能

1.项目背景 接到一个需求,实现电商营销模块的圆盘抽奖功能。如果大家有关注市面上的抽奖,大致也是圆盘抽奖、九宫格抽奖,随机抽球等等。尤其是电商行业,会有各种各样的活动,因此也会出现各式各样的抽奖,那…

Eclipse控制台输出log4j日志乱码解决

1. 出现乱码可能是编码格式对应不起来,主要是Eclipse控制台编码和log4j编码的匹配 log4j.properties 主要是查看这两个地方编码一致不一致,如果不一致则手动更改成一致编码,GBK或UTF-8

2023年9月广州/重庆/长沙/深圳DAMA-CDGA/CDGP认证考试报名

据DAMA中国官方网站消息,2023年度第三期DAMA中国CDGA和CDGP认证考试定于2023年9月23日举行。 报名通道现已开启,相关事宜通知如下: 考试科目: 数据治理工程师(CertifiedDataGovernanceAssociate,CDGA) 数据治理专家(CertifiedDataGovernanc…

基于单片机的智能温控风扇的设计与实现

功能介绍 以STM32单片机作为主控系统; 液晶显示当前温度,风速等级,自动手动模式息; DS18B20检测当前的温度; 按键设置温度上限; 手动模式下: 直接控制风扇档位,可以开启/关闭风扇&a…

【ubuntu重装系统后的软件配置_memo】

重装系统后系统环境恢复 备份安装系统常用的一些debvscode 更改sourcespip加速爬长城的家伙式儿安装ROS安装cmake安装git安装zsh顺便开个ssh提升幸福感的映射配置neovimplugins字体插件遇到的问题 锁键盘/鼠标小玩意儿 备份 实验时不起眼的图顺手写的脚本忘记从哪儿下载的资源…

计算机网关原理、子网掩码原理(路由器、交换机)(网关:与以太网接口关联的路由)

文章目录 网关网关的历史网关的功能网关的原理相关疑问为什么用子网掩码与IP地址进行与运算来确定一个IP地址所属的子网?网关地址是谁定的,是配置路由的人随意定的吗?(配置人员定的)如何正确设置网关地址(路…

【SAP UI5 控件学习】DAY03 Input组Part III

1. Input 控件 1.1 最简单的Input控件 在UI5框架中&#xff0c;最简单的Input控件也提供了输入提示功能。当用户输入内容的时候&#xff0c;会自动匹配Input控件中所绑定的JSON模型中是数据。 Input的默认匹配规则是匹配从头匹配每一个单词 前端代码如下&#xff1a; <mv…