Volatile Violates seu trabalho principal?

De acordo comMSDN:

A palavra-chave volátil indica que um campo pode ser modificado por vários encadeamentos que estão sendo executados ao mesmo tempo. Campos que são declarados voláteis não estão sujeitos a otimizações de compilador que pressupõem acesso por um único thread. Isso garante que o valor mais atualizado esteja presente no campo em todos os momentos.

Por favor, observe a última frase:

Isso garante que o valor mais atualizado esteja presente no campo em todos os momentos.

No entanto, há um problema com essa palavra-chave.

Eu tenholer que pode alterar a ordem das instruções:

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

Isso significa que John define um valor para um campo volátil emais tarde Paul quer ler o campo, Paul está recebendo ovelho valor!

O que está acontecendo aqui? Não é o trabalho principal?

Eu sei que existem outras soluções, mas minha pergunta é sobre a palavra-chave volátil.

Devo eu (como programador) precisar evitar usar essa palavra-chave - por causa de um comportamento tão estranho?

questionAnswers(3)

yourAnswerToTheQuestion