oxb*_*kes 7 scala volatile thread-safety actor
在Scala中,如果我有一个简单的类,如下所示:
val calc = actor {
var sum = 0
loop {
react {
case Add(n) =>
sum += n
case RequestSum =>
sender ! sum
}
}
}
Run Code Online (Sandbox Code Playgroud)
我的领域sum应该被标记@volatile吗?虽然actor在逻辑上是单线程的(即消息是按顺序处理的),但各个反应可能发生在不同的线程上,因此state变量可能在一个线程上被改变,然后从另一个线程读取.