2008-08-25 volatile(ボラタイル) C# マルチスレッド private volatile int count_val = 0; 複数のスレッドから参照される可能性のあるメンバにつける。 これをつけると、コンパイラの最適化の対象にならない。メンバのRead/Writeを行う際に 必ずメンバ変数の実体にアクセスするようになる。 コンパイラの最適化を行うと、この変数の値がキャッシュメモリやレジスタに保持されてしまう。 その為、実体の値とキャッシュ値が異なる場合が発生する。 キャッシュを行わなくなるので、むやみに使い過ぎるとパフォーマンスの低下につながる。