Volatile ist ein Qualifikationsmerkmal, das zum Definieren eines Datenspeicherbereichs (Objekt, Feld, Variable, Parameter) verwendet wird, der "sich selbst ändern kann", wodurch einige Code-Generator-Optimierungen nicht zulässig sind. In einigen aber nicht allen Sprachen, die diesen Qualifier erkennen, ist der Zugriff auf solche Daten threadsicher.
Gegeben ein Codebeispiel aus Oracle-Dokumenten Ссылка
%Vor%
Und vorausgesetzt, dass alle Methoden der Klasse Point aus verschiedenen Threads aufgerufen werden können:
Warum brauchen wir die Felder x und y nicht unbedingt als flüchtig d...
30.08.2017, 09:05
Ich frage mich, ob das Schreiben in eine flüchtige Variable jvm zwingt, alle nichtflüchtigen Variablen mit dem Speicher zu synchronisieren, also zum Beispiel, was im folgenden Code passieren wird:
%Vor%
x wird in die Erinnerung geschrieben,...
20.08.2011, 01:40
Betrachten Sie diesen Code:
%Vor%
Mit g++ -std=c++14 -pedantic -O3 bekomme ich diese Assembly:
%Vor%
Nach meiner Schätzung sollte die Variable x mindestens dreimal (möglicherweise vier) geschrieben werden, aber nicht einmal einmal...
07.05.2016, 01:38
Betrachten Sie Folgendes:
%Vor%
Woher weiß ich, ob gcc mich als volatil behandelt hat oder nicht? Es würde als solches deklariert werden, da kein nahegelegener Code es modifizieren wird, und eine Modifikation davon wahrscheinlich auf einen I...
13.03.2009, 12:59
Während ich diese Antwort schrieb , wurde mir klar, dass ich nicht so überzeugt von meinen Schlussfolgerungen bin, wie ich normalerweise vor dem Schlagen sicherstellen würde Hinterlegen Sie Ihre Antwort .
Ich finde ein paar ziemlich überzeu...
15.11.2012, 22:57
Ich habe mich bei volatile für den Referenztyp verwirrt.
Ich verstehe, dass für den primitiven Typ volatile Wertänderungen von einem anderen Thread sofort widerspiegeln kann. Als Referenztyp kann er die Adressänderungen sofort widerspie...
28.12.2011, 23:26
Ich habe dieses merkwürdige Verhalten des volatilen Keywords kürzlich erfahren. Soweit ich weiß,
Das flüchtige Schlüsselwort wird auf die Variable angewendet, um die an den Daten vorgenommenen Änderungen widerzuspiegeln
die Variable um eine...
01.07.2012, 10:49
Wie bekannt ist, garantieren wir, dass wenn wir eine Objektreferenz haben und diese Referenz ein letztes Feld hat - wir sehen alle erreichbaren Felder vom letzten Feld (zumindest wenn der Konstruktor fertig war)
Beispiel 1:
%Vor%
Wie ich...
02.02.2017, 21:31
Alles, was ich über volatile gelesen habe, sagt, dass es nie sicher ist, aber ich fühle mich immer noch geneigt, es zu versuchen, und ich habe dieses spezifische Szenario, das als unsicher erklärt wurde, nicht gesehen.
Ich habe einen separate...
25.02.2013, 18:41
Mmap gibt ein void *, aber kein volatile void* zurück. Wenn ich den gemeinsamen Speicher mit mmap abbilde, könnte ein anderer Prozess in diesen Speicher schreiben, was bedeutet, dass zwei aufeinanderfolgende Lesevorgänge vom gleichen Speicher...
08.07.2010, 20:18