LabVIEW程序设计模式(五)—生产者消费者模式VI的可重入性(ReentrantExecution).doc

LabVIEW程序设计模式(五)—生产者消费者模式VI的可重入性(ReentrantExecution).doc

  1. 1、本文档共2页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
LabVIEW程序设计模式(五)—生产者消费者模式VI的可重入性(ReentrantExecution)

LabVIEW程序设计模式(五)—生产者/消费者模式(2)_VI的可重入性(Reentrant Execution)  HYPERLINK /blog/ \l m=0t=1c=fks_087065092080089064086085084095086085080071086095081075 \o LabVIEW程序设计札记 LabVIEW程序设计 2009-05-19 17:06:34 阅读698 评论0 ??字号:大中小?订阅 在介绍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,单击Ctrl+I按键,选择图 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都设置为可重入,那将占据大量的内存资源。 ? 评论这张 转发至微博 0人??|? 分享到:???????? 阅读(698)| 评论(0)| 引用 (1) |举报

文档评论(0)

2017ll + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档