LabVIEW建立生产者消费者

简介: LabVIEW建立生产者消费者

LabVIEW建立生产者消费者


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


队列


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


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


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



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


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


通道


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


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


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


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


队列使用


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


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


同步


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


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



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


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

相关文章
|
9月前
|
机器学习/深度学习 人工智能 供应链
2025年中国机器视觉系统公司综合实力TOP10:树根科技领衔,全景解析主流服务商竞争格局
面对工业质检升级与成本压力,机器视觉成智能制造关键。本文盘点十家领先企业,从技术、场景、生态与服务四大维度,深度解析树根科技、凌云光、奥普特等厂商实力,揭示“工业之眼”如何赋能数智化转型,助力企业甄选可信赖的战略伙伴。
3232 2
LabVIEW异步调用VI的多个实例实现并行执行
LabVIEW异步调用VI的多个实例实现并行执行
930 1
|
设计模式
LabVIEW状态机设计模式技术手册和练习
LabVIEW状态机设计模式技术手册和练习
446 1
|
监控
LabVIEW与串口通讯在运行一段时间后出现数据接收中断的问题
LabVIEW与串口通讯在运行一段时间后出现数据接收中断的问题
981 0
|
数据采集 传感器 监控
目前比较好用的LabVIEW架构及其选择
目前比较好用的LabVIEW架构及其选择
808 0
|
数据采集 测试技术 数据处理
LabVIEW控制PLC的实现方式
LabVIEW控制PLC的实现方式
910 1
|
网络协议 数据处理 C++
LabVIEW与Simulink的通信及调用方式
LabVIEW与Simulink的通信及调用方式
661 1
|
数据采集 监控 测试技术
JKI State Machine的特点与详细介绍
JKI State Machine的特点与详细介绍
861 0
JKI State Machine的特点与详细介绍
|
存储
LabVIEW使用VI Package Manager(VIPM)下载和管理附加组件
LabVIEW使用VI Package Manager(VIPM)下载和管理附加组件
1533 1
|
监控 算法 Linux
LabVIEW开发CAN通讯协议
LabVIEW开发CAN通讯协议
890 0

热门文章

最新文章