Является ли создание нового субъекта из существующего потокобезопасным?

Как уже несколько раз говорилось здесь, вы можете запустить новый поток (поместив вычисление с длительной обработкой в ​​блок субъект {} ) внутри актора, и порожденные вычисления будут безопасно выполняться на 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) 
}

Однако будет ли он потокобезопасным и будет ли он в целом соответствовать исходному проекту, который гласит, что только один поток в определенный момент времени может работать с одним актер?

5
задан 18 May 2011 в 11:49
поделиться