[LabVIEW架构]ActorFramework(一)

前言

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

在第一个文档中,我们先来理解一下AF的概念,以及它的来龙去脉。

正文

如果你已经使用LabVIEW编程2年以上,你将不可避免的会接触到生产者消费者,不可以避免的会设计属于自己QMH系统,甚至为解决多线程中的数据通信大费周折。

在程序只有个位数线程的时候,你会欣喜于自己可以控制多个线程进行不同的行为,但是当程序继续扩大,你不得不面临如下的问题:
1. 子线程中的错误越来越难以调试
2. 子线程中出现的BUG越来越难以复现
3. 子线程中的耗时代码很难定位

对于多线程中的队列和通讯关系,我们不得不承认对于线程的管理是一个艰难和痛苦的过程。

对于并发程序的开发,计算机科学进行了很多的理论推导,其中Actor Model作为一种并发的理论基础,不断发展,成为了解决并发问题的有效途径。

Actor Model的起源

Actor Model起源于1973年 Carl Hewitt的论文,该模型灵感据说来源于物理学的广义相对论和量子力学并受到了Lisp,Simula的编程语言和Smalltalk早起版本的影响。

理论产生后 由高度并行计算机的前景驱动其 发展(在并行计算机 硬件层级,系统由数十个,数百个,甚至数千个独立微处理器组成,每个处理器都有自己的本地存储和通讯处理器,通过高性能的网络进行通讯)

之后,Irene Greif  专门研究该模型,并为Acto Model 开发了一套操作术语作为其博士后的研究成果。

两年后, 亨利·贝克和休伊特出版了一套针对Actor系统的公理定律。

这些研究成果直接推动了ActorFramework的全面发展, 它不仅仅是并发计算的一种理论体系,也是 多个实际并发系统应用的理论基础。既 应用于硬件系统层级的并发设计,而且也推动了软件并行开发的发展。

如果你希望获得Actor Model的准确定义,可以查看WIKI获取相关资料 
如果你希望理解Actor Model的更多解释,可以参考文档(本文为阅读该文档的翻译和理解):
如果你希望学习LabVIEW ActorFramework,你可以参考文档:

什么是Actor Model

Actor Model的理解从一个情境假设,并开始推演。

我们不妨将Actors认为是一个个人,规定这些人员不能互相进行语言沟通,他们仅仅通过邮件方式进行交流。

1. Message

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

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

通过这个例子,我们理解了Actor Model在解决消息发送中的流程
841277-20170511001031535-1777923545.jpg

 2.并发

现在,我们不妨假设存在3对老师和学生,每一个学生发送邮件给任何一个老师,将会发生什么事情呢?

实际上什么都不会发生,每一个人都将会有属于自己的邮箱,但是这里有一个要点需要注意:

默认情况下,邮件中的邮箱按照到达的顺序去读取。【事实上可以通过对消息定义优先级来确保高优先级的消息先接收】

在默认情况下,其内部是一系列并发的、相互关联的队列。没有一个人会阻塞等待邮件接收,这个系统将是一个无阻塞的沟通。
841277-20170511001033722-1494341028.jpg

 3. Failover-故障切换

我们继续假定老师是教授不同的课程,分别是历史、地理和物理。

历史老师回复了一个历史课的内容;
地理老师回复了一个有趣的地理知识;
哲学老师回复了一条格言。

每一个学生发送消息给老师时,都将获得一个回馈。学生不关心是哪个老师发送了回馈信息。
假如有一天,一个老师生病休息无法发送反馈信息,将会有一个新的代课老师来代替回复信息。

841277-20170511001034910-159926649.jpg
 这里有几个关键点需要注意:
1. 这个系统中,不同的Actor完成不同的操作
2. 如果Actor无法完成某一个操作,可以重新创建一个Actor来继续任务,或者忽略该任务

4. 多任务处理

不同的老师除了反馈自己的一些知识,也可在询问考试成绩的时候给出分数邮件。在Actor Model系统中,这意味着Actor 可以执行多种不同的Message

5.改变


841277-20170511001038941-1459028831.jpg

在这个文档中,学生和老师将会变成我们的Actor,The Email Box 成为了Mail Box组件,请求和响应是一些静态不可修改的类,系统将Message路由给不同的Actor。

LabVIEW中的映射

在LabVIEW中,我们将映射这部分的逻辑关系,了解Actor Model的原理。
(本程序设计以LabVIEW版本为2015为准)

Actor创建

在学习ActorFramework时,我们先知道其选板位置为
841277-20170511001039582-512452834.png
面向对象编程的主要对话框为项目,为此我们创建一个空白的项目

841277-20170511001040238-1775859977.png

新建Actor,创建基础的Actor模板
841277-20170511001041066-1177460558.png
完成Student 的创建
841277-20170511001042972-1938333571.png

Method创建

Student有属于自己的行为,所以为这个Actor创建属于自己的Method
841277-20170511001043957-1357582386.png
 为Student创建Requested Quote
  841277-20170511001044488-1084837089.png
完善其方法,使其弹出Dialog!
841277-20170511001045129-1188627925.png

 Message创建

创建Student中Request Quote和Teacher中Quote Response的Message
841277-20170511001045644-1253100215.png
完成创建后的Message将会多出一个Request Quote MSG
  841277-20170511001046066-222049252.png

 启动Actor

新建空白的LuanchVI
841277-20170511001046816-1712948888.png
使用LaunchVI启动和Send Normal Stop进行停止
841277-20170511001047660-1941323930.png

发送消息

通过Send Request Quote 发送消息
841277-20170511001048566-526604401.png
 

 运行程序

运行程序,我们实现了对Request消息的发送和异步执行
841277-20170511001049051-90516388.png
 未完待遇,更多精彩请看后续文章....

后记

本文介绍了Actor Model的基本概念, 并映射到LabVIEW中,写出了一个简单消息的发送Demo,后续将会对实际执行过程进行更加深入的分析,欢迎继续关注~

 


 

 

 

 















转载于:https://www.cnblogs.com/EltonLiang/p/6838895.html

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
LabVIEW QDMH架构是一种基于LabVIEW开发环境的软件架构,用于构建高效、可伸缩的分布式测量和自动化系统。QDMH是指Quick Data Management Handler(快速数据管理处理器),它提供了一种灵活、可扩展的数据管理和处理方式。 LabVIEW QDMH架构的主要特点包括以下几点: 1. 高效性:QDMH通过异步数据处理和分布式数据管理,提供了高效的数据处理和传输能力。它可以将数据从多个数据源采集并集中管理,以提高数据处理效率和系统的响应速度。 2. 可扩展性:QDMH架构支持多种数据源和数据格式,包括传感器、仪器、数据库等。它可以轻松集成新的数据源,并且可以自由扩展系统的规模和功能。 3. 分布式架构:QDMH可以将数据处理任务分布到不同的节点上,实现分布式数据处理和分析。这种架构可以提高系统的可靠性和性能,并且能够适应不同规模和复杂度的应用需求。 4. 灵活性:QDMH提供了丰富的数据处理和分析功能,包括数据过滤、转换、计算、存储和可视化等。它还支持用户自定义算法和操作,以满足不同领域和应用的需求。 5. 易用性:QDMH基于LabVIEW开发环境,具有直观的图形化编程界面和丰富的开发工具。开发人员可以通过简单拖拽和连接的方式构建系统,并且可以方便地进行调试、测试和部署。 总之,LabVIEW QDMH架构是一种适用于测量和自动化系统的高效、可扩展的软件架构。它通过提供灵活的数据管理和处理方式,帮助用户构建复杂、可靠的分布式系统,并且提供了丰富的功能和易用的开发环境,满足不同领域和应用的需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值