前言

在上一个文章中,我们介绍了一下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. C# 类反射创建对象实例

    object obj= Activator.CreateInstance(Type  type);

  2. 【题解】Atcoder ARC#76 F-Exhausted?

    第一次用霍尔定理做题..简单的来说,就是判断一张二分图上是否存在完美匹配,只需要证明对于 \(a\) 集合中的任意 \(k\) 个点来说,都与 \(b\) 集合中的 \(k\) 个点有边相连.如果不满 ...

  3. [JXOI2017]颜色 线段树扫描线 + 单调栈

    ---题面--- 题解: 首先题目要求删除一些颜色,换个说法就是要求保留一些颜色,那么观察到,如果我们设ll[i]和rr[i]分别表示颜色i出现的最左边的那个点和最右边的那个点,那么题目就是在要求我们 ...

  4. POJ2891:Strange Way to Express Integers——题解

    http://poj.org/problem?id=2891 题目大意: k个不同的正整数a1,a2,...,ak.对于一些非负m,满足除以每个ai(1≤i≤k)得到余数ri.求出最小的m. 输入和输 ...

  5. BZOJ2555:SubString——题解

    https://www.lydsy.com/JudgeOnline/problem.php?id=2555 (1):在当前字符串的后面插入一个字符串 (2):询问字符串s在当前字符串中出现了几次?(作 ...

  6. 洛谷 P3332 [ZJOI2013]K大数查询 解题报告

    P3332 [ZJOI2013]K大数查询 题目描述 有\(N\)个位置,\(M\)个操作.操作有两种,每次操作如果是\(\tt{1\ a\ b\ c}\)的形式表示在第\(a\)个位置到第\(b\) ...

  7. 20165218 预备作业3 Linux安装及学习

    Linux安装及学习 第二节 基本概念及操作 1. 关于图形界面 Linux本身是没有图形界面的,对于初学者来说,这或许是其与Windows系统最直观的差别.Linux所呈现给用户的实际上是一个实现图 ...

  8. HDOJ(HDU).2266 How Many Equations Can You Find (DFS)

    HDOJ(HDU).2266 How Many Equations Can You Find (DFS) [从零开始DFS(9)] 点我挑战题目 从零开始DFS HDOJ.1342 Lotto [从零 ...

  9. ucenter搭建

    使用xftp传到虚拟机.解压[root@ygy130 ~]# unzip -o -d ./Ucenter_1.6 UCenter_1.6.0_SC_UTF8.zip [root@ygy130 ~]# ...

  10. PowerDesigner12.5下载汉化及破解

    一.下载: 在网上直接输入PowerDesigner12.5下载,很多地方都可以下载成功. 二.汉化: 直接将解压的汉化文件复制[覆盖]到安装目录即可. 三.破解[稍微费事一点]: 1.安装完成后,修 ...