volatile BOOL m_bEnd; 中的 volatile 是什么意思

求助:volatile BOOL m_bEnd; 中的 volatile 是什么意思?
请教:
CRITICAL_SECTION   m_CS;
volatile   BOOL   m_bEnd;

CRITICAL_SECTION   是什么意思
volatile   是什么意思?
在什么情况下要加这个啊
谢谢!


------解决方案--------------------
CRITICAL_SECTION 是个结构体
volatile 与const 相反, 具体查看 MSDN, 一般是用来防止变量被优化成寄存器

------解决方案--------------------
CRITICAL_SECTION是一个变量类型;
volatile 关键字指示字段可由操作系统、硬件或并发执行的线程在程序中进行修改。
系统总是在 volatile 对象被请求的那一刻读取其当前值,即使上一条指令从同一对象请求值。而且,该对象的值在赋值时立即写入。
volatile 修饰符通常用于由多个线程访问而不使用 lock 语句来序列化访问的字段。使用 volatile 修饰符能够确保一个线程检索由另一线程写入的最新值。