在 Scala 中,如果我有一个简单的类,如下所示:
val calc = actor {
var sum = 0
loop {
react {
case Add(n) =>
sum += n
case RequestSum =>
sender ! sum
}
}
}
我的领域sum
应该被标记@volatile
吗?虽然参与者在逻辑上是单线程的(即消息是按顺序处理的),但各个反应可能发生在单独的线程上,因此state
变量可能会在一个线程上被更改,然后从另一个线程读取。