labviEW一个生产者,多个消费者问题

2019-07-17 15:34发布

大家好,我的程序的出发点是希望实现一个生产者,十六个消费者模块的形式。
即生产者循环中的事件结构有十六个处理分支,对应每一个分支,它产生一个“开始”元素入队列,相应的消费者模块中元素出队列,开始数据采集,而且数据采集部分是比较耗时间的,数据采集部分有相应的跳出循环机制。
问题是我现在一共有16个消费者模块,我需要用16个循环!这样太不合理了,有没有什么更好的实现方式,请大伙给点建议。谢谢大家!
demo.png
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
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.jpg
self_charge.vi (20.32 KB, 下载次数: 84)

一周热门 更多>