前言

在上一个文章中,我们介绍了一下LabVIEW中AF的基本概念,本讲将以上一次的例子来讲解LabVIEW中的实现

正文

范例说明

假定两个人,一个作为老师,一个作为学生。学生每天早上给老师发送一封邮件,而老师给其一个反馈

这里将有这样一些沟通的要点:

1. 学生通过邮件沟通,并且一旦发送邮件,会话即开始,无法停止
2. 老师收到邮件后即进行对应的动作
3. 老师收到邮件后必然会反馈一封邮件
4. 学生可以在任何时候接收返回的邮件
5. 学生将不再存在一直阻塞等待的问题

通过这个例子,我们理解Actor Model在解决消息发送中的流程

LabVIEW实现-Actor建立

在这个例子中,我们需要建立两个Actor,分别称之为Student与Wise Teacher

通过上一个文章的操作,我们已经建立了Student的Actor
为此需要再次建立Wise Teacher的Actor作为消息的接收方

完成建立后的Wise Teacher Actor如下图所示

 
为Teacher建立静态的Quote Response 的方法,这里选择 VI From Static Dispatch Template,
 

由于Teacher发送消息的时候需要指定接收Student的地址,所以需要提供Student的Message

  为这个Quote Response 创建一个消息

LabVIEW实现-Message沟通机制

由于Actor都必须要启动和停止,所以我们在LaunchVI中设计Actor的启动停止机制
 
这样子我们就配置好了Actor的工作环境,接下来设计交流通讯的方式

 由于Student需要给Wise Teacher发送消息,所以Student需要知道Teacher的Message地址,这里也即我们的Message的队列
将Message的类放置于Student的私有数据
 
 
当需要外部访问Student的数据时,需要设计Member Access的接口

 这里创建Teacher Message的访问,对外界提供只可以写入的方法

 这里创建完成后可以看到Write Teacher Message.vi,可以用来写入Message数据

 
我们在启动Student的时候,将Teacher的Message写入到Student中去

 在执行Request Quote的时候,可以设置发送Teacher的消息
 
 这样,我们的Teacher即可收到Student发送来的消息,不妨将老师收到的消息设置为弹窗, 查看是否收到Message
 我们不妨设计 一个Send Message To Teacher的触发,当点击按钮时,发送消息,如果老师收到消息,则会提示弹窗
实际运行即弹出了窗口,证明老师成功收到了邮件
 
 

LabVIEW实现-Student接收Teacher的Message

为了定义Student接收到Teacher的Message行为,我们为Student设计Receive Teacher Back Message方法以及对应的Message
这里设计该VI弹窗,代表通讯结束
 
在Teacher接收到消息后,我们将弹窗修改为Student的Send Receive Teacher Back Message

 
至此,完成了所有的通讯过程,完成了目标设计
 

结语

本文通过简单的Demo,实现了下图所示的流程,容我思考一会儿.....
 

[LabVIEW架构]ActorFramework(二)的更多相关文章

  1. [LabVIEW架构]ActorFramework(一)

    前言 小黑结婚回来第二周了,每天忙于程序设计,时间比较紧张,所以文章一直没出来,也算憋大招了. 近期小黑将与大家一起认识一下ActorFramework,既是对自己一段时间写AF程序的总结,也是梳理, ...

  2. Redis缓存项目应用架构设计二

    一.概述 由于架构设计一里面如果多平台公用相同Key的缓存更改配置后需要多平台上传最新的缓存配置文件来更新,比较麻烦,更新了架构设计二实现了缓存配置的集中管理,不过这样有有了过于中心化的问题,后续在看 ...

  3. Linux集群架构(二)

    Linux集群架构(二) 目录 八.LVS DR模式搭建 九.keepalived + LVS 十.扩展 八.LVS DR模式搭建 1.实验环境: 四台机器: client: 10.0.1.50 Di ...

  4. LAMP架构(二)

    第十八次课 LAMP架构(二) 目录 一.Apache默认虚拟主机 二.Apache用户认证 三.域名跳转 四.Apache访问日志 五.访问日志不记录静态文件 六.访问日志切割 七.静态元素过期时间 ...

  5. InnoDB体系架构(二)内存

    InnoDB体系架构(二)内存 上篇文章 InnoDB体系架构(一)后台线程 介绍了MySQL InnoDB存储引擎后台线程:Master Thread.IO Thread.Purge Thread. ...

  6. Mybatis架构原理(二)-二级缓存源码剖析

    Mybatis架构原理(二)-二级缓存源码剖析 二级缓存构建在一级缓存之上,在收到查询请求时,Mybatis首先会查询二级缓存,若二级缓存没有命中,再去查询一级缓存,一级缓存没有,在查询数据库; 二级 ...

  7. slf4j 之logback日志之sl4j架构【二】

    一.整体介绍 介绍: The Simple Logging Facade for Java (SLF4J) serves as a simple facade or abstraction for v ...

  8. LabVIEW(十二):VI本地化-控件标题内容的修改

    一.对于一般LabVIEW的学习,很少遇到本地化的问题但是我们经常会遇到界面控件标题的显示问题.由于各个技术领域的专业性,往往用户对VI界面的显示有自己的要求,其中就包括控件的标题问题,这可以理解成本 ...

  9. Tomcat架构解析(二)-----Connector、Tomcat启动过程以及Server的创建过程

    Connector用于跟客户端建立连接,获取客户端的Socket,交由Container处理.需要解决的问题有监听.协议以及处理器映射等等. 一.Connector设计   Connector要实现的 ...

随机推荐

  1. Dom样式操作-属性操作

    1. 对样式进行操作: 1) 以样式(C1,C2等)为最小单位进行修改. className, classList, (以列表形式获得) classList.add("C2"), ...

  2. CentOS httpd服务(Apache)

    1.从ISO镜像安装,Apache 服务的软件包名称为 httpd #检查源配置[root@localhost media]# cat /etc/yum.repos.d/CentOS-Media.re ...

  3. thread-wait/sleep

    对于sleep()方法,我们首先要知道该方法是属于Thread类中的.而wait()方法,则是属于Object类中的. sleep()方法导致了程序暂停执行指定的时间,让出cpu该其他线程,但是他的监 ...

  4. oracle中varchar2字段存入blob字段及blob转成varchar2

    CREATE OR REPLACE FUNCTION C2B (b IN CLOB default empty_clob()) RETURN BLOB -- typecasts BLOB to CLO ...

  5. bzoj2326:[HNOI2011]数学作业(分段矩阵乘法)

    题目大意:输入n(n<=10^18)和m,将1~n的整数连起来模m输出,比如n=13则输出12345678910111213模m的数. 设f[i]为1~i整数连起来模m的数,i的位数为k,则有f ...

  6. Hcharts和Echarts----制作报表的工具

    Hcharts官网:https://www.hcharts.cn/Hcharts API文档:https://api.hcharts.cn/highcharts Echarts官网:http://ec ...

  7. 你会喜欢的前端^o^!

    前端那些事儿 网页设计常用色彩搭配表 很漂亮的alert弹出框 一个让你想到即可做到的web弹窗/层解决方案 基于HTML5的在绘图特效平台(酷炫)

  8. 一图看懂深度学习框架对比----Caffe Torch Theano TensorFlow

      Caffe Torch Theano TensorFlow Language C++, Python Lua Python Python Pretrained Yes ++ Yes ++ Yes ...

  9. 旋转 3d

    建议chorme浏览器浏览,有样式兼容性问题. 图片可以根据自己本地路径设置路径,js库引用jquery. 写的不好,多多建议,谢谢大家. <html onselectstart="r ...

  10. [异常篇]001.MySQL数据库忘记root密码解决办法[转载]

    MySQL数据库忘记root密码解决办法 1.在运行输入services.msc打开服务窗体,找到MYSQL服务.右键停止将其关闭.如图: 2.在运行输入cmd打开终端. 3.找到MYSQL的安装目录 ...