刚刚开始使用Scala Actors.在斯卡拉网站说:
通过使用
react等待新消息(基于事件的挂件receive)可以避免线程阻塞操作.但是,有一个(通常是很小的)代价:react永远不会回报....
请注意,
react在while循环内使用不起作用!但是,由于循环是常见的,因此以loop函数的形式为其提供特殊的库支持.它可以像这样使用:
loop {
react {
case A => ...
case B => ...
}
}
Run Code Online (Sandbox Code Playgroud)
我现在感到困惑 - 似乎有一个矛盾:
a)如果react永远不会返回,那么将它置于循环中有什么意义呢?
b)由于loop重复执行一个块,它有什么不同while(true)- 为什么不起作用while,以及它以什么方式"不起作用"?
dre*_*xin 11
这两个功能,loop而react不是纯粹的.loop通过name参数和reactPartialFunction 进行调用,两者都在原始actor上设置变量.这是因为演员没有始终附加线程.只有当消息框中有消息时,它才会变为活动状态.这就是为什么一个while(true)将导致100%的CPU使用和演员没有响应.