volatile が重要で、ここは最適化するなということをコンパイラに知らせる。
メモリマップドIOや、別スレッドとの共有メモリなど。