volatile修飾詞は、最適化を防ぐ

 
コンパイラの最適化機能は、マルチスレッドプログラミングとかだと、不具合を起こす可能性があります。

mValue = 1;
while(mValue){
 	... //この中でmValueを変えるようなことはしない
}

例えば、コンパイラは、しばしば上記のようなコードを、最適化によって以下のようなコードに変えます。

while(1){
	...
}

whileの途中で、別スレッドからmValueの値を変化することを期待していた場合、このコードはうまく動きません。
よって、そんなときは、

volatile int mValue;

と宣言しておくとうまくゆきます。