我如何使用akka unbecome有什么问题

 _嗚啦啦900 发布于 2023-02-08 08:34

有一个scala课程(来自coursera反应课程)

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.有谁可以形容为什么?

1 个回答
  • 您的调用become放弃了先前的行为,因为第二个参数discardOld的默认值为true.此默认行为旨在避免内存泄漏.

    2023-02-08 08:46 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有