操作者框架(Actor Framework)快速使用篇

在学习操作者框架前,需要一些前置知识点:
1.生产者消费者模式
2.类的一些特性

其中生产者消费者模式,我稍微修改了一下以便于我们和操作者进行比较,如下图所示应该比较容易理解。

如果读者不清楚,可以网上稍微搜索学习一下,只需要简单了解,对于这篇文章的学习来说就足够了。

刚开始学习使用Actor,我们要干的就三件事,1.创建一个操作者,2.启动和关闭一个操作者,3.命令这个操作者干些事情。

一、创建一个操作者

首先我们新建一个空白工程,创建一个操作者。创建步骤:我的电脑(右击)—>新建—>操作者。输入名字后完成创建。

我们会得到如图这么一个项目,我们得到了一个类,叫Actor1,还得到了一个“操作者消息的文件夹”(这个文件夹主要用来存放操作者里非常重要的一个东西,消息类)。

那这个Actor1到底是个啥呢,打开其类属性,我们发现他是一个继承于Actor的子类。所以整个Actor框架,其实就是NI写了个父类,把一些方法写了进去,当你创建自己的Actor的时候,就可以继承这些方法了。

好了我们来看看NI提供了哪些方法让我们使用。

直接拿来用的方法(这里可能不是很严谨,但如果你是刚开始接触,先这样理解吧):

可以自己稍微修改一下(重写vi)的方法,也可以直接用:

具体这些干嘛用的我们暂时先不讲,我们先知道有这些东西就行。

二、启动和关闭一个操作者

2.1先说启动一个操作者,巨简单!

没错这样就启动了一个操作者,是不是很简单,但是我启动了一个操作者后,这个操作者在干嘛呢。这个启动了的操作者先进行了初始化(Pre Launch Init.vi),然后不停的在运行Actor Core.vi。

我们先来看看Launch Init.vi,基于Actor1创建对应的用于重写的vi,我们可以看到

额,对它啥也没干,因为我们啥也没写,后续可以根据需求,把一些初始化的东西写在这个里面。

在说Actor Core.vi之前,首先要讲下Actor里消息是什么,消息可以理解为你生产者消费者框架里,你需要发送的“命令”。只不过Actor里的消息更加牛掰,它将消息写成了一个类。类里的属性就是你执行相关命令需要的参数。和生产者消费者一样,生产者发送一条命令,消费者就会执行对应的操作,你向Actor发送一个消息,Actor同样也会执行一个相对应的操作。

然后我们用同样的方法看下Actor Core.vi:程序其实就是在1.优先出队(这步其实就是根据优先级把“消息类"选择出来),2.接收消息(这步就是在处理操作者收到的“消息类”,并执行相应操作),3.处理错误(如果第二步产生错误,则3会对错误进行一个处理,默认处理是直接停止操作者,我们可以按需对这一部分重写,目前不细说),然后循环直至退出操作者。

2.2关闭一个操作者

关闭操作者需要对操作者发送关闭消息,上面我已经讲了消息大概是什么,现在来讲下怎么发送消息,首先要获取操作者的消息队列,就是这个。

然后你发送对应的消息

如此便实现了操作者的启动,然后关闭。(是不是感觉有点无语,好没用的例子。)不急我们稍微改造一下。直接用生产者消费者吧,原汤化原食,是不是感觉有用了一点。(但其实这里面有个问题,当你多次启动操作者时,会运行多个操作者,该代码无法将其全部关闭,但我们先不管吧)。

三、写个简单的操作者命令

我们首先写个简单的消息弹窗.vi(如果不知道这个怎么写的,大概率是labview类的使用不熟悉,该文章我不多赘述)。

右击该vi—>操作者框架—>创建消息。Labview会自动根据你的消息弹窗vi创建消息目标,存放在对应的操作者消息文件夹下。

这时候我们使用“发送消息弹窗.vi",和前面发送停止消息一样,将其添加进代码。

然后我们测试一下代码,Nice!

四、总结

至此,你已经学会了最简单的操作者的使用。它其实相当于一个前后端分离,你启动了一个后端(Actor1),你的前端(main.vi)给他发消息,后端执行对应的操作。大家可以试着写一些别的操作,来感受一下Actor框架的魅力。

LabVIEW Actor Framework是一种基于Actor模型的编程框架Actor模型是一种并发计算模型,其中的独立单位被称为Actor,它们可以并行运行,并通过异步消息传递进行通信和协作。 在LabVIEW Actor Framework中,每个Actor都是一个独立的实体,具有自己的状态和行为。每个Actor都可以通过消息队列收发消息,并根据收到的消息执行对应的操作。Actors之间的消息传递是异步的,使得多个Actors可以并行地工作而不会相互阻塞。 LabVIEW Actor Framework提供了一种结构化的方式来设计和实现并发和分布式系统。它充分利用了LabVIEW的数据流和事件驱动的特性,使得多个Actors可以相互通信,共享数据,并协同完成复杂的任务。同时,通过在Actor之间建立层次化的关系,可以实现更加灵活和可扩展的系统架构。 使用LabVIEW Actor Framework,我们可以更加方便地设计和开发高效的并发程序。它提供了一种抽象层,隐藏了底层的多线程处理细节,使得程序员可以更加专注于问题的逻辑和功能实现。此外,LabVIEW Actor Framework还提供了一套强大的调试和监控工具,可以实时查看Actors之间的消息传递和系统的运行状况,帮助我们更好地理解和优化程序的行为。 总之,LabVIEW Actor Framework是一种高效、可扩展的并发编程框架,它为LabVIEW开发者提供了一种简单而强大的方式来设计和实现复杂的并发和分布式系统。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值