【发布时间】:2010-11-05 02:16:00
【问题描述】:
在 Scala 中,如果我有一个简单的类如下:
val calc = actor {
var sum = 0
loop {
react {
case Add(n) =>
sum += n
case RequestSum =>
sender ! sum
}
}
}
我的字段sum 是否应该标记为@volatile?虽然参与者是逻辑上单线程(即消息按顺序处理),但个别反应可能发生在不同的线程上,因此state 变量可能会在一个线程上被更改然后读取来自另一个。
【问题讨论】:
标签: scala thread-safety volatile actor