Volatile Narusza jego główne zadanie?

WedługMSDN:

Słowo kluczowe volatile wskazuje, że pole może zostać zmodyfikowane przez wiele wątków wykonywanych w tym samym czasie. Pola zadeklarowane jako niestabilne nie podlegają optymalizacji kompilatora, która zakłada dostęp przez pojedynczy wątek. Gwarantuje to, że najbardziej aktualna wartość jest zawsze obecna na polu.

Zwróć uwagę na ostatnie zdanie:

Gwarantuje to, że najbardziej aktualna wartość jest zawsze obecna na polu.

Istnieje jednak problem z tym słowem kluczowym.

Jaczytać że może zmienić kolejność instrukcji:

First instruction       Second instruction         Can they be swapped?
Read                         Read                         No
Read                         Write                        No
Write                       Write                         No 
Write                       Read                          Yes! <----

Oznacza to, że John ustawia wartość na zmienne pole ipóźniej Paul chce przeczytać pole, Paul robistary wartość!

Co tu się dzieje Czy to nie jest główna praca?

Wiem, że istnieją inne rozwiązania, ale moje pytanie dotyczy niestabilnego słowa kluczowego.

Czy powinienem (jako programista) zapobiegać używaniu tego słowa kluczowego - ze względu na takie dziwne zachowanie?

questionAnswers(3)

yourAnswerToTheQuestion