Как уже несколько раз говорилось здесь, вы можете запустить новый поток (поместив вычисление с длительной обработкой в блок субъект {}
) внутри актора, и порожденные вычисления будут безопасно выполняться на sam пул потоков (используется планировщиком акторов).
actor{
var i = 0
case msg => actor {
// computation
i = i + 1 // is `i` still thread safe?
// looks like it can be access simultaneosly from 2 two threads now
// should I make it @volatile?
}
reply(i)
}
Однако будет ли он потокобезопасным и будет ли он в целом соответствовать исходному проекту, который гласит, что только один поток в определенный момент времени может работать с одним актер?