В Scala, если у меня есть простой класс следующим образом:
val calc = actor {
var sum = 0
loop {
react {
case Add(n) =>
sum += n
case RequestSum =>
sender ! sum
}
}
}
Должно ли мое поле sum
быть помечено @volatile
? Хотя субъект * логически однопоточный (т.е. сообщения обрабатываются последовательно), отдельные реакции могут происходить в отдельных потоках, и, следовательно, переменная state
может быть изменена в одном потоке, а затем считана из другой.