akka actor如何在线程之间进行交互
我读过akka文档,并且在使用akka时无法对线程交互产生清晰的理解。 Docs可能会忽略这个东西,但它对我来说并不那么明显。
所有的阿卡演员似乎都在同一个线程中运行。 我将演员视为共同程序,每次接到呼叫时都有自己的堆栈重置。
你可以执行一系列直线切换的演员。 每个接收执行小的非阻塞操作并强制另一个接收进一步工作。 没有事件循环,可以处理演员系统之外的消息。
我想赶上其他线程的请求,执行控制操作,并等待另一条消息。
有一些用例概述了我的需求。
有线程不断地轮询来自某些来源的数据。 一旦数据匹配模式,它就基于actor来调用事件驱动的处理程序。 逻辑控制器做出决定并将其传递给工作人员。 应该有两个持久线程。 一个线程在轮询中不断工作,另一个线程异步工作以控制它的工作。 你不应该让akka演员第一次线程,因为他们打破了投票时间,第一个线程不应该阻止演员,所以他们需要另一个线程。
有某种双面棋盘游戏。 一方拥有一个控制器线程,用于安排与电路板服务器等进行交互的计算时间。 其他线程是一个沉重的计算线程,它可以循环使用不同的变体,因为它阻止了自然,所以不能写入akka
我意识到现有的阿卡期货,但它们代表了一项工作任务,一旦执行目标就会被解雇并关闭。 期货与akka演员很好地结合,但不能表达循环的工作线索。
阿卡演员系统包含不同种类的网络事件循环。 您可以使用其内置的远程参与者系统或众所周知的0mq协议。 但是使用网络进行线程交互似乎对我来说过分了。
有什么方法可以将非裙带线与akka线绑在一起? 我应该写几个特殊的程序来以线程安全的方式执行消息传递吗?
如果你需要轮询,那么轮询线程应该把轮询的任何信息转换成消息并将其发送给参与者。
我发现使用具有receiveTimeout的Actor在一个间隔内执行非阻塞式轮询,并且当有些事情被轮询时,它会将它发布给其他actor,或者甚至是它的ActorSystems的EventStream,以用于真正的pub - 子行动。
链接地址: http://www.djcxy.com/p/57993.html