actor

Should my Akka actors' properties be marked @volatile?

人走茶凉 提交于 2021-02-20 06:01:48
问题 This question looks similar to Should my Scala actors' properties be marked @volatile? but not sure that answer will be the same. As example, in case when the fork-join dispatcher was configured and actor's state wasn't marked by @volatile, is it guarantied that state of the actor will be propagated through the cache hierarchy from one core (or processor) to another if fork/join worker threads run on different cores (or processors)? P.S. Is it right that after JSR133 only one write/read

Does MailboxProcessor just duplicate IObservable?

限于喜欢 提交于 2021-02-09 10:50:49
问题 I want to process to types of a message Add x makes program remember number x Print makes it print all remembered numbers Why would I write this: open System type Message = | Add of int | Print let mailbox = new MailboxProcessor<Message>(fun inbox -> let rec loop history = async{ let! msg=inbox.Receive() match msg with | Add x -> return! loop(history + x.ToString()+" ") | Print -> printfn "%s" history return! loop(history) } loop "" ) [<EntryPoint>] let main argv = mailbox.Start() mailbox

What is the difference between TPL dataflow and Akka.net?

馋奶兔 提交于 2020-08-04 03:25:21
问题 I have worked with TPL dataflow. Really liked it. I had heard the term Akka many times from my java/scala friends so I tried to read about it and found out that akka has a .net port too. Great. When I continued reading about what akka is, I was surprised to see that it sounds exactly like TPL dataflow. So coming to my question, what is the difference between TPL dataflow and Akka.net ? When to chose what ? 回答1: Akka is an actor based model, and so is TPL Dataflow. As the latter is described

企业开发-log4j 最新版本2使用简介

扶醉桌前 提交于 2020-05-04 12:36:15
1、官网http://logging.apache.org/log4j/2.x/index.html 2、SLF4J目前已经是业界标准,完整兼容和实现 3、如何兼容版本1?log4j-1.2-api-2.4.1.jar这个包,但是还是有一些接口是变化了,个人看了下都是些不常用的接口变了,如果你用到请修改源代码。参考官方 http://logging.apache.org/log4j/2.x/manual/migration.html 4、多个 SLF4J实现不能共存,共存需要解决一些冲突问题 5、log4j-slf4j-impl和log4j-to-slf4j不能共存,从名称就能看出一个是log4j对SLF4J的实现,一个是反过来。一起会报错 6、新特征:支持异步日志更强大。因为公司需要分布式日志,所以是用scala actor写的,当时也有测试使用Disruptor,效率极高,没想到就出来了,哈哈。 7、新的语法 logger.debug("Logging in user %s with birthday %s", user.getName(), user.getBirthdayCalendar()); logger.debug("Logging in user %1$s with birthday %2$tm %2$te,%2$tY", user.getName(), user

UE4碰撞规则详解

梦想的初衷 提交于 2020-03-30 00:36:02
UE4的碰撞设置在官方的文档的 物理模拟模块(链接: 点击打开链接 )。但是操作起来感觉坑还是比较多,所以这里总结一下,以防平时经常会漏掉或忽略某些条件。如果想看关于碰撞响应触发,可以参考链接( UE4蓝图碰撞检测解析 ) 如果想进一步深入UE物理引擎相关内容,请参考博客 ( UE4物理模块分析 ) 现在开始讲解并总结一下UE4里面的碰撞规则: 1.只有拥有Collision属性的实体才可以碰撞 每个实体Actor,包括static Mesh,sphere,capsule等带碰撞的组件,在detail细节面板都有一个collision属性的栏。这个里面的参数是控制这些实体间进行碰撞的必要条件。 (注:在UE4里面,所有可以直接放在UE4场景世界里的对象都是一个Actor,这个类型在C++中是类AActor。其本身包含了非常多的属性,如坐标,碰撞等必要的特性。继承于Actor的有Pawn,Character,StaticMeshActor,CameraActor等等,所以在游戏世界存在的实体都属于Actor,不过Actor本身可能还包含组件等更多其他的元素) 2.不同实体的碰撞通过碰撞通道来区分 在UE4世界里面所有带碰撞的Actor被分为很多类别,比如WorldDynamic,Worldstatic,Pawn,character等,这些类型被称为一个个collision

Learn Orleans 01 - 初探

蓝咒 提交于 2020-03-23 01:46:54
Orleans的官方定义是“用于构建健壮的,可扩展的分布式应用程序的跨平台框架”。它是Actor模型的.NET实现。 本章主要记录一些基础概念。 Actor模型 Actor模型并不是什么新的概念,它由Carl Hewitt在1973年提出,Gul Agha在1986年发表技术报告“Actors: A Model of Concurrent Computation in Distributed Systems”。 -- https://blog.csdn.net/gulianchao/article/details/7249117 Actor模型是一个概念模型,用于处理并发计算。它定义了一系列系统组件应该如何动作和交互的通用规则,最著名的使用这套规则的编程语言是 Erlang 。 一个Actor指的是一个最基本的计算单元。它能接收一个消息并且基于其执行计算。 面向对象思想通过隐藏类的私有方法来实现封装,仅允许外部调用公有方法来使用类。这一点在Actor中,给出了另外的理解。Actor外部仅能通过消息调用,Actor内部的实现对外不可见。 Actors一大重要特征在于actors之间相互隔离,它们并不互相共享内存。一个actor能维持一个私有的状态,并且这个状态不可能被另一个actor所改变。 光有一个actor是不够的,多个actors才能组成系统

使用idea开发flink报错

梦想与她 提交于 2020-03-20 07:20:12
使用idea开发flink报错,就是普通的读取文本内容,进行单词计数。scala版本是2.11.12,flink是1.8.1 报错信息如下: Exception in thread “main” java.lang.NoSuchMethodError: akka.actor.ActorSystemImpl.(Ljava/lang/String;Lcom/typesafe/config/Config;Ljava/lang/ClassLoader;Lscala/Option;Lscala/Option;Lakka/actor/setup/ActorSystemSetup;)V at akka.actor.RobustActorSystem.(RobustActorSystem.scala:41) at akka.actor.RobustActorSystem.internalApply(RobustActorSystem.scala:89) at akka.actor.RobustActorSystem.internalApply(RobustActorSystem.scala:89)atakka.actor.RobustActorSystem.apply(RobustActorSystem.scala:70) at akka.actor.RobustActorSystem

Akka Actor_Future的使用

假如想象 提交于 2020-03-18 18:38:29
3 月,跳不动了?>>> Akka Actor_Future的使用 常见的是通过Actor的tell方法给另外一个actor发送消息,但是actor 和 future怎么交互,发送消息,如下, Future<Object> future = Patterns.ask(a, "are you ready?", timeout); 做了一个Future 和 Actor 结合使用的例子,如下, package com.usoft; import akka.actor.ActorRef; import akka.actor.ActorSystem; import akka.actor.Props; import akka.actor.UntypedActor; import akka.event.Logging; import akka.event.LoggingAdapter; import akka.pattern.Patterns; import akka.util.Timeout; import scala.concurrent.Await; import scala.concurrent.Future; import scala.concurrent.duration.Duration; /** * Created by liyanxin on 2015/1/8. */

大数据学习——actor编程

末鹿安然 提交于 2020-03-17 18:52:53
1 概念 Scala中的Actor能够实现并行编程的强大功能,它是基于事件模型的并发机制,Scala是运用消息(message)的发送、接收来实现多线程的。使用Scala能够更容易地实现多线程应用的开发。 2 传统java并发编程与scala actor编程的区别 对于Java,我们都知道它的多线程实现需要对共享资源(变量、对象等)使用synchronized 关键字进行代码块同步、对象锁互斥等等。而且,常常一大块的try…catch语句块中加上wait方法、notify方法、notifyAll方法是让人很头疼的。原因就在于Java中多数使用的是可变状态的对象资源,对这些资源进行共享来实现多线程编程的话,控制好资源竞争与防止对象状态被意外修改是非常重要的,而对象状态的不变性也是较难以保证的。 而在Scala中,我们可以通过复制不可变状态的资源(即对象,Scala中一切都是对象,连函数、方法也是)的一个副本,再基于Actor的消息发送、接收机制进行并行编程 3 actor方法执行顺序 1.首先调用start()方法启动Actor 2.调用start()方法后其act()方法会被执行 3.向Actor发送消息 发送消息的方式 ! 发送异步消息,没有返回值。 !? 发送同步消息,等待返回值。 !! 发送异步消息,返回值是 Future[Any]。 例子 添加依赖 <!--scala

UE4学习笔记--EQS系统

情到浓时终转凉″ 提交于 2020-03-17 06:25:46
最近在研究虚幻4引擎的EQS系统,看了下官方对EQS的解释文档(官方文档链接: https://docs.unrealengine.com/en-US/Engine/ArtificialIntelligence/EQS/index.html )及相关源码,熟悉了EQS在AI制作时的应用和使用,文章为本人学习之余所整理笔记,如有纰漏欢迎指正交流。 一、EQS原理: EQS(Environment Query System),直译为环境查询系统,可以理解成对当前场景状态的扫描或者检查,往往配合AI行为树一起使用。其实现原理比较好理解,简单来说就是将场景环境划分,一般来说是按密度划分成一个一个点,当然也可以以场景元素Actor来进行划分,将环境划分好后,再按照相应的设定规则对划分项(点或Actor)进行打分,最后得分最高的Item即为系统所找到的最优查询结果。EQS系统将其最优查询结果告知AI,AI行为树则会对来其进行相应的决策及执行。 二、EQS组成部分: 使用EQS前我们最好知道EQS的都由哪些部分组成,各部分的分工都是什么。虚幻4官方文档对其各个组成部分的名词解释已较为详细,以下是本人对官方文档中名词解释的简单整理: 1.EnvironmentQuery(环境查询资产) EQS资产,我的理解一个EQS资产就是一个可供AI使用的EQS实例。它相当于是一个容器