| 8 |
Hat im weitesten Sinne vielleicht noch was mit codekicker zu tun die Frage, aber meiner Meinung nach sind das Fragen, die man sinnvoller mit einer Suchmaschine lösen kann. So findet man da http://de.wikipedia.org/wiki/Volatile_%28Informatik%29 oder auch direkt zu C/C++ http://www.imb-jena.de/~gmueller/kurse/c_c++/c_volat.html was die Frage schon irgendwie beantwortet.
|
|
| 3 |
wenigstens kommt dadurch ein wenig mehr leben auf codekicker.de :D
|
Das Schlüsselwort volatile teilt dem Compiler mit, daß die mit name bezeichnete Variable mit dem Datentyp typ durch Ereignisse außerhalb der Kontrolle des Programms verändert werden kann.
Der Wert der Variablen muß deshalb vor jedem Zugriff neu aus dem Hauptspeicher eingelesen werden, d.h. er darf nicht in einem Register des Prozessors zwischengespeichert werden.
Der Compiler arbeitet bei mit volatile deklarierten Variablen ohne jede Optimierung, d.h. läßt die entsprechenden Werte bei jedem Zugriff neu aus dem Hauptspeicher laden und sorgt bei Veränderungen dafür, daß die neuen Werte ohne Verzögerung dort sofort abgelegt werden.
volatile verhindert bestimmte Optimierungsmaßnahmen des Compilers, es sorgt dafür, daß Operationen so ausgeführt werden, wie sie im Quelltext notiert werden, d.h. zum Beispiel, es werden keine Umstellungen vorgenommen und Werte werden nicht in einem Cache gehalten, d.h. veränderte Werte werden nicht "zurückgehalten".
class Test {
volatile int a;
public void test() {
a = 7;
a = 4;
a = 7;
}
}