Sollten die Eigenschaften meiner Akka-Darsteller @volatile sein?

8

Diese Frage ähnelt Wenn die Eigenschaften meiner Scala-Akteure markiert sind @volatile? aber nicht sicher, ob die Antwort die gleiche ist.

Wenn beispielsweise der Fork-Join-Dispatcher konfiguriert wurde und der Status des Actors nicht durch @volatile markiert wurde, wird garantiert, dass der Status des Actors durch die Cachehierarchie von einem Core (oder Prozessor) an weitergegeben wird ein anderes, wenn fork / Join-Worker-Threads auf verschiedenen Kernen (oder Prozessoren) ausgeführt werden?

P.S. Ist es richtig, dass nach JSR133 nur eine Schreib- / Leseoperation zu / von irgendeiner flüchtigen Variablen benötigt wird, um den Cache zum Hauptspeicher zu leeren und alle vorhergehenden nicht-flüchtigen Schriften von diesem Thread auf anderen Threads zu sehen, die auf einem anderen Kern (oder Prozessor) laufen? Wenn ja, dann kann es eine Antwort sein, da das Scannen der Arbeitswarteschlange einige Lesungen und Schreiben von / zu flüchtigen Variablen der FJ-Aufgabe durchführt.

    
Andriy Plokhotnyuk 15.04.2012, 20:04
quelle

1 Antwort

4

Nein, Sie sollten nicht flüchtig auf Ihre Schauspielerfelder setzen. Warum?

  

wenn ein Akteur während der Verarbeitung von a Änderungen an seinem internen Zustand vornimmt   Nachricht, und greift auf diesen Zustand während der Verarbeitung einer anderen Nachricht   Augenblicke später. Es ist wichtig, dies mit dem Schauspielermodell zu erkennen   Sie erhalten keine Garantie, dass derselbe Thread den Befehl ausführt   derselbe Akteur für verschiedene Nachrichten.

Es ist alles hier: Ссылка

In Bezug auf Ihre PS müssen Sie in dasselbe flüchtige Feld lesen / schreiben, um die Vor-Vor-Garantie zu erhalten. Lesen Sie "flüchtiges Piggyback"

    
Viktor Klang 15.04.2012, 22:31
quelle

Tags und Links