专家
公告
财富商城
电子网
旗下网站
首页
问题库
专栏
标签库
话题
专家
NEW
门户
发布
提问题
发文章
LabView
labviEW一个生产者,多个消费者问题
2019-07-17 15:34
发布
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
站内问答
/
LabVIEW
12745
19
1166
大家好,我的程序的出发点是希望实现一个生产者,十六个消费者模块的形式。
即生产者循环中的事件结构有十六个处理分支,对应每一个分支,它产生一个“开始”元素入队列,相应的消费者模块中元素出队列,开始数据采集,而且数据采集部分是比较耗时间的,数据采集部分有相应的跳出循环机制。
问题是我现在一共有16个消费者模块,我需要用16个循环!这样太不合理了,有没有什么更好的实现方式,请大伙给点建议。谢谢大家!
友情提示:
此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
19条回答
jiuri1989
2019-07-18 07:52
小米好用 发表于 2012-4-5 17:02
其实就一个消费者, 通过case来区别呢?
我的第一感觉是可以更好的来处理这种情况。所以我又做了一些尝试,请大家评价。谢谢
我的修改如下:
1)队列的元素为簇,这里我以两个消费者为例:对于簇包含的布尔数组,假如值为(1,0),则对应在消费者循环中,第一个消费者会被特殊处理。
2)限定队列的大小为1
3)生产者循环中,元素入队列函数改成“有损耗元素入队列”,即队列已满的情况下队列会删除最前端的元素,这样做的目的是避免当生产者部分短时间内产生多次元素入队列事件,而由于消费者循环部分是比较耗时的,消费者循环好不容易执行完本次循环,准备下一次循环时,却不确定响应的是哪一次生产者产生的事件呢,两者变得不同步了。
4)在消费者模块中,每一次For循环执行完后,为了维持消费者循环的运行,加入一个判断语句,获取当前队列的状态,若队列为空,则元素入队列,值为(0,0),即不对任何一个消费者做特殊处理(可以理解特殊处理为硬件配置等等情况),但是保证消费者循环的运行。
附件是截图和源程序,请大家查看。谢谢
self_charge.vi
(20.32 KB, 下载次数: 84)
加载中...
查看其它19个回答
一周热门
更多
>
相关问题
怎么利用公式波形产生所想要的波形
2 个回答
USBCAN-2A与PCI5121D的数据通信
1 个回答
labview调用c时遇到问题
1 个回答
大家帮小弟解决下问题,不胜感激
4 个回答
关于labview插值
1 个回答
相关文章
×
关闭
采纳回答
向帮助了您的知道网友说句感谢的话吧!
非常感谢!
确 认
×
关闭
编辑标签
最多设置5个标签!
LabView
保存
关闭
×
关闭
举报内容
检举类型
检举内容
检举用户
检举原因
广告推广
恶意灌水
回答内容与提问无关
抄袭答案
其他
检举说明(必填)
提交
关闭
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
×
付费偷看金额在0.1-10元之间
确定
×
关闭
您已邀请
0
人回答
查看邀请
擅长该话题的人
回答过该话题的人
我关注的人
我的第一感觉是可以更好的来处理这种情况。所以我又做了一些尝试,请大家评价。谢谢
我的修改如下:
1)队列的元素为簇,这里我以两个消费者为例:对于簇包含的布尔数组,假如值为(1,0),则对应在消费者循环中,第一个消费者会被特殊处理。
2)限定队列的大小为1
3)生产者循环中,元素入队列函数改成“有损耗元素入队列”,即队列已满的情况下队列会删除最前端的元素,这样做的目的是避免当生产者部分短时间内产生多次元素入队列事件,而由于消费者循环部分是比较耗时的,消费者循环好不容易执行完本次循环,准备下一次循环时,却不确定响应的是哪一次生产者产生的事件呢,两者变得不同步了。
4)在消费者模块中,每一次For循环执行完后,为了维持消费者循环的运行,加入一个判断语句,获取当前队列的状态,若队列为空,则元素入队列,值为(0,0),即不对任何一个消费者做特殊处理(可以理解特殊处理为硬件配置等等情况),但是保证消费者循环的运行。
附件是截图和源程序,请大家查看。谢谢
一周热门 更多>