加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

当我们使用循环而不是while(true)与scala actor时会发生什么?

发布时间:2020-12-16 19:13:28 所属栏目:安全 来源:网络整理
导读:使用带有actor的接收时,使用循环而不是while(true)有什么区别.循环似乎工作得更快,但为什么,以及发动机罩下发生了什么? 使用循环而不是while(true)有什么不好吗? 更多关于背景.我正在简单的ping / pong代码中进行性能测试.我正在使用接收. 这是Ping类: cl
使用带有actor的接收时,使用循环而不是while(true)有什么区别.循环似乎工作得更快,但为什么,以及发动机罩下发生了什么?

使用循环而不是while(true)有什么不好吗?

更多关于背景.我正在简单的ping / pong代码中进行性能测试.我正在使用接收.

这是Ping类:

class ReceivePing(
        count : Int,pong : Actor
       ) extends Actor {def act() {
var pingsLeft = count - 1
pong ! Start
pong ! ReceivePing
while(true) {
  receive {
    case ReceivePong =>
      if (pingsLeft % 10000 == 0)
        Console.println("ReceivePing: pong")
      if (pingsLeft > 0) {
        pong ! ReceivePing
        pingsLeft -= 1
      } else {
        Console.println("ReceivePing: stop")
        pong ! Stop
        exit()
      }
  }
}}}

而不是while(true)它在循环中表现更好.

谢谢

解决方法

使用循环将线程释放到其他任务,而虽然没有.所以,如果你使用很多actor,那么循环的使用会提高效率.另一方面,使用while和receive的单个actor比使用loop并且做出反应(或者,就此而言,循环和接收)快得多.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读