• LabVIEW建立生产者消费者


    LabVIEW建立生产者消费者

    生产者/消费者设计模式由并行循环组成,这些循环分为两类:生产者循环和消费者循环。生产者循环和消费者循环间的通信可以使用队列或通道连线来实现。

    队列

    LabVIEW内置的队列操作VI可在函数选板>>数据通信>>队列操作( Functions>> Data Communication >> Queue Operations)中找到。

    队列基于先进/先出理论。在生产者/消费者设计模式中,队列可以在生产者循环和消费者循环之外初始化。生产者循环为消费者循环生成数据,所以会向队列添加数据(将数据添加到队列中称为“入列”)。

    消费者循环将从该队列中删除数据(从队列中删除数据称为“出列”)。因为队列基于先进先出原则,所以消费者总是按照生产者向队列添加数据的顺序对数据进行分析。图1显示如何在LabVIEW中创建生产者/消费者设计模式。

    图1:生产者/消费者设计模式

    LabVIEW中提供有关于使用队列的范例,可作为应用程序开发的起点。如果要搜索这些范例,可在LabVIEW范例查找器中搜索“队列”(Queue)。

    通道

    LabVIEW2016新增了通道连线功能。通道连线可以实现与队列相同的功能。

    在队列中,您可以设置队列引用(获取队列)、添加数据(入列)和删除数据(出列),然后关闭队列引用(发布队列);使用通道(Channels)功能,该过程将简化为仅设置数据的Writer和Reader。

    有关通道连线和入门模板的更多信息,请参见《LabVIEW帮助文档:使用通道连线在代码的并行部分之间通信数据》

    在处理生产者/消费者设计模式时,需要注意一些注意事项,例如,队列的使用和同步。

    队列使用

    问题: 队列被绑定到特定的数据类型。因此,生产者循环中产生的每个不同数据条目都需要放置到不同的队列中。这可能带来一个问题,那就是增加了程序框图的复杂性。

    解决方案: 队列可以接受数组和簇等数据类型。每个数据条目都可以放到一个簇中。这样就会掩盖簇数据类型背后的各种数据类型。

    同步

    问题: 由于生产者/消费者设计模式并非基于同步,循环初次执行时并不遵循特定的顺序。 因此,在一个循环之前启动另一个循环可能会导致问题。

    解决方案: 可以通过将事件结构添加到生产者/消费者设计模式解决这类同步问题。 图2显示了实现这一功能的模板。 

    图2:在生产者/消费者设计模式中使用事件结构

    这是LabVIEW的一个功能介绍,更多的使用方法与开发案例,欢迎登录官网,了解更多信息。有需要LabVIEW项目合作开发,请与我们联系。

  • 相关阅读:
    18.2 使用NPCAP库抓取数据包
    git的下载与初始配置
    RTU远程终端控制系统S274
    CSS 模糊效果 CSS 黑白效果 CSS调整亮度 对比度 饱和度 模糊效果 黑白效果反转颜色
    体育世界杂志体育世界杂志社体育世界编辑部2022年第4期目录
    企业过二级等保采购哪家堡垒机好?
    基于SpringBoot+Redis实现接口限流
    【爬虫】scrapy创建运行爬虫、解析页面(嵌套url)、自定义中间件(设置UserAgent和代理IP)、自定义管道(保存到mysql)
    流程自动化如何帮助简化安全性
    LabVIEW显示Unicode字符
  • 原文地址:https://blog.csdn.net/bjcyck/article/details/133868584