【问题标题】:Should my Akka actors' properties be marked @volatile?我的 Akka 演员的属性是否应该标记为@volatile?
【发布时间】:2012-04-15 20:04:53
【问题描述】:

此问题与Should my Scala actors' properties be marked @volatile? 相似,但不确定答案是否相同。

例如,如果配置了 fork-join 调度程序并且参与者的状态未由 @volatile 标记,是否保证参与者的状态将通过缓存层次结构从一个核心(或处理器)传播到另一个如果 fork/join 工作线程在不同的内核(或处理器)上运行?

附:在 JSR133 之后,只需对任何易失性变量进行一次写入/读取操作,即可将缓存刷新到主内存并在其他内核(或处理器)上运行的其他线程上查看该线程的所有先前非易失性写入,这对吗?如果是,那么它可以回答,因为扫描工作队列会读取和写入 FJ 任务的易失性变量。

【问题讨论】:

    标签: actor volatile akka


    【解决方案1】:

    不,您不应该将 volatile 放在您的演员字段中。为什么?

    如果演员在处理 消息,并在处理另一条消息时访问该状态 片刻之后。重要的是要意识到演员模型 你不能保证同一个线程将执行 不同消息的相同演员。

    都在这里:http://doc.akka.io/docs/akka/2.0/general/jmm.html

    关于您的 PS,您需要读取/写入相同的 volatile 字段才能获得发生前发生的保证。阅读“不稳定的捎带”

    【讨论】:

      猜你喜欢
      • 2010-11-05
      • 2011-09-27
      • 1970-01-01
      • 2013-08-03
      • 2014-07-10
      • 2023-03-03
      • 2011-10-23
      • 1970-01-01
      • 2019-04-23
      相关资源
      最近更新 更多