http://en.wikipedia.org/wiki/Volatile_variable
http://www.cplusplus.com/forum/beginner/7762/
http://msdn.microsoft.com/en-us/library/12a04hfd%28v=vs.110%29.aspx
http://www.cl.cam.ac.uk/teaching/1112/CandC++/lectures/lecture4-land.pdf
http://stackoverflow.com/questions/386554/example-c-function-using-volatile-variables
http://stackoverflow.com/questions/2444695/volatile-vs-mutable-in-c
http://en.wikipedia.org/wiki/Volatile_variable#In_C_and_C.2B.2B
http://www.drdobbs.com/cpp/volatile-the-multithreaded-programmers-b/184403766
To be short:
volatile is used to signify to the compiler not to optimize use of the variable that is declared volatile.
but it is not safe in multi-thread context.