scala – 如何使用连续分割和调度异步控制流?
发布时间:2020-12-16 09:17:16 所属栏目:安全 来源:网络整理
导读:我有一个异步控制流程,如下所示: ActorA ! DoA(dataA,callback1,callbackOnErrorA)def callback1() = { ... ActorB ! DoB(dataB,callback2,callbackOnErrorB)}def callback2() = { ActorC ! DoC(dataC,callback3,callbackOnErrorC)} ... 我将如何将这个流分
我有一个异步控制流程,如下所示:
ActorA ! DoA(dataA,callback1,callbackOnErrorA) def callback1() = { ... ActorB ! DoB(dataB,callback2,callbackOnErrorB) } def callback2() = { ActorC ! DoC(dataC,callback3,callbackOnErrorC) } ... 我将如何将这个流分成几个部分(延续),并在维持整体状态的同时将它们顺序地分配给不同的执行者(或线程/任务)? 任何提示赞赏,谢谢 解决方法
这是非常简化的,但显示了如何在三个演员之间分割一个控制流,将状态传递给每个:
package blevins.example import scala.continuations._ import scala.continuations.ControlContext._ import scala.actors.Actor._ import scala.actors._ object App extends Application { val actorA,actorB,actorC = actor { receive { case f: Function1[Unit,Unit] => { f() } } } def handle(a: Actor) = shift { k: (Unit=>Unit) => a ! k } // Control flow to split up reset { // this is not handled by any actor var x = 1 println("a: " + x) handle(actorA) // actorA handles the below x += 4 println("b: " + x) handle(actorB) // then,actorB handles the rest var y = 2 x += 2 println("c: " + x) handle(actorC) // and so on... y += 1 println("d: " + x + ":" + y) } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |