Menu:

第8章  同步化(3)


事件(Occurrence)

      这里所谈到的“事件(Occurrence)”应该是事件产生的意思,与结构中的“事件(Event)”不同,本书出版时“事件结构”还没有出现,有关事件结构的介绍请参考《学习札记》中的内容。
      在本节所涉及的内容中,除非另有说明,所谈到的“事件”指的就是指的“事件(Occurrence)。
     


      引入这种事件的处理方式就是避免使用轮询方式所导致的系统资源浪费。
      它与轮询方式不同的是它还可以在vi之间使用传递或触发事件。
      它与轮询方式的另一个不同就是它本身提供了三个内置函数,分别是:产生事件、等待事件和设置事件。
     
      使用这三个内置函数,用户就可以实现以事件的方式来处理程序运行不同的内容。


      由于它可以在vi中传递信息,并且可以有多个相同的事件处理节点,所以它有些像一个全局变量。那么全局变量的缺点,破坏数据流的情况就可能发生,这是在使用中要十分注意的事情。
      具体使用方法参见LabVIEW的帮助文档。

      其实有了事件结构后,使用它的地方真的并不是很多。至少我更习惯事件结构的使用。


应用实例


      这是一个使用事件的实例。当按下Stop按键后导致出现一个对话框。上面的While循环还是处于轮询的状态,查询是否有创建的事件发生,当Stop按键按下,设置事件导致“等待事件”激发对话框。

      这种事件机制是比较低层次的运行机制,用户还必须为它们添加一些功能才能达到有效的使用。

      它的好处是可以集中的控制多个任务的执行过程。这或许是一种解决复杂控制的好方法。

      《LabVIEW大学实用教程》第13.7.5节也有简单的说明,不妨看看。但是它强调试着使用通告来代替这种事件(它称这种事件为:并发事件)。

      实际上,是没有找到更好的例程来说明这种事件机制的特点。