是从现有的一个线程安全产生一个新的演员吗?

5 scala thread-safety actor

正如之前多次说过的那样,你可以在一个actor中抛出一个新线程(将一个长处理计算放入actor{}块中),并且生成的计算将安全地运行在同一个线程池中(由actor调度器使用).

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) 
}
Run Code Online (Sandbox Code Playgroud)

但是,它是否是线程安全的,并且它通常遵循原始设计,它表明在一个时刻只有一个线程可以与一个actor一起工作?

Kev*_*ght 8

从另一个人那里产生演员是完全安全的.

但是,无论生成的方式和位置如何,都不会在参与者之间共享可变状态.

演员的全部意义在于他们应该通过邮箱与消息进行沟通.滥用此模型并且演员不会提供比并发问题更多的保护.