LabVIEW程序设计模式(五)—生产者/消费者模式(1)_前言
扫描二维码
随时随地手机看文章
再次回顾“基本状态机模式”的6个缺点,只剩下第6个缺点无法在上述的“状态机和事件结构的结合模式”中被解决。
任何时刻只能有一个状态在运行这个问题也许有些多余,但是在实际的应用中往往又是最常见的。大多数比较复杂的应用至少应该有“菜单”和“采集”两个状态,如果数据采集程序在运行时仍然希望系统能够处理菜单的事件,这是在传统的状态机或者事件结构中无法实现的。因为无论是状态机结构还是事件结构,都是由一个循环组成的,不同的状态是无法同时被响应和处理的。
解决这个问题的方式也比较简单,LabVIEW本身就是一种多线程的程序设计语言,可以再加一个循环或者另外开一个程序独立运行。但是这样也会带来一些新的问题,比如:
两个循环(程序)之间如何交换和共享数据。两个循环(程序)都有着独立的错误处理系统,它们之间是如何协调的。两个循环如何分工呢?应该以哪种方式对状态进行分类以将不同的状态放置在不同的循环(程序)中?一个程序如何控制另一个程序的运行和停止。在上面提出的4个问题中,对循环和程序这两个解决方案而言,第(1)~(3)个问题的解决方式是一样的。只有第(4)个问题是专门针对两个程序而言的,在LabVIEW中这种不同程序之间的相互调用称为“程序的动态调用”。