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?