12.01.2014 Aufrufe

2-up - ETH Zürich

2-up - ETH Zürich

2-up - ETH Zürich

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

Java: Nicht-Atomarität von double und long<br />

• Double- und long-Variablen sind 64 Bit lang<br />

• Auf 32-Bit-Prozessoren sind beim Schreiben bzw.<br />

Lesen jeweils zwei Speicherzugriffe nötig; diese<br />

sind zwischendrin unterbrechbar!<br />

• Bei zwei Threads, die auf die gleiche Variable<br />

zugreifen, kann es zu Inkonsistenzen kommen:<br />

Ergebnis entspricht nicht unbedingt einem<br />

möglichen Interleaving auf Sprachebene<br />

815<br />

Java: Nicht-Atomarität von double und long (2)<br />

"Programmers are<br />

cautioned always to<br />

explicitly synchronize<br />

access to shared double<br />

or long variables“<br />

(The Java Virtual<br />

Machine Specification)<br />

Wie erreicht man Konsistenz, wenn es hardwaremässig<br />

keine atomaren Befehle zum Zugriff auf 64 Bits gibt?<br />

816<br />

337

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!