C ++ Thread, gemeinsame Daten

Ich habe eine Anwendung, wo 2 threads ausgeführt werden... Ist es certanty, dass, wenn ich eine Globale variable aus einem thread, die andere bemerken diese Veränderung?
Ich habe keine syncronization oder Gegenseitigen Ausschluss-system an Ort und Stelle... aber sollte dieser code die ganze Zeit arbeiten (stellen Sie sich eine Globale bool namens dataUpdated):

Thread 1:

while(1) {
    if (dataUpdated)
        updateScreen();
    doSomethingElse();
}

Thread 2:

while(1) {
    if (doSomething())
        dataUpdated = TRUE;
}

Funktioniert ein compiler wie gcc optimieren Sie diesen code in einer Weise, dass es nicht überprüfen Sie für den globalen Wert, nur wenn man es mit dem Wert zur compile-Zeit (weil es in nevers geändert an der gleichen thred)?

PS: Wird diese für ein Spiel-ähnliche Anwendung, es wirklich spielt keine Rolle, ob es eine zu Lesen, während der Wert geschrieben wird... alles was zählt ist, dass die Veränderung wird bemerkt, von den anderen thread.

InformationsquelleAutor der Frage fabiopedrosa | 2008-09-22

Schreibe einen Kommentar