gpt4 book ai didi

scala - 我使用 akka unbecome 有什么问题

转载 作者:行者123 更新时间:2023-12-04 00:18:45 25 4
gpt4 key购买 nike

有一个scala类(来自coursera reactive类(class))

class Counter extends Actor {
def counter(n: Int): Receive = {
case "inc" => context.become(counter(n + 1))
case "get" => sender ! n
}

def receive = counter(0)
}

这个 actor 所做的就是通过 inc 请求递增计数器并通过 get 请求返回当前计数器值。我认为 context.become 将新行为添加到行为堆栈中。所以如果我添加行

    case "dec" => context.unbecome()

它将从堆栈中恢复之前的行为,进一步的获取请求将返回之前的值。但是如果我跑

counter ! "inc"
counter ! "inc"
counter ! "inc"
counter ! "inc"

counter ! "dec"
counter ! "get"

返回的结果是 0 而不是我预期的 3。谁能解释一下为什么?

最佳答案

您对 become 的调用会丢弃之前的行为,因为第二个参数的默认值 discardOld 为真。此默认行为旨在避免内存泄漏。

关于scala - 我使用 akka unbecome 有什么问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20787698/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com