volatile brief explanation

volatile修饰符告诉编译程序不要对该变量所参与的操作进行某些优化。
 在两种特殊的情况下需要使用volatile修饰符:
第一种情况涉及到内存映射硬件(memory-mapped hardware,如图形适配器,这类设备对计算机来说就好象是内存的一部分一样),
第二种情况涉及到共享内存(shared memory,即被两个以上同时运行的程序所使用的内存)。
 大多数计算机拥有一系列寄存器,其存取速度比计算机主存更快。好的编译程序能进行一种被称为“冗余装入和存储的删去”
(redundant load and store removal)的优化,即编译程序会在程序中寻找并删去这样两类代码:
一类是可以删去的从内存装入数据的指令,因为相应的数据已经被存放在寄存器中;
另一种是可以删去的将数据存入内存的指令,因为相应的数据在再次被改变之前可以一直保留在寄存器中。
如果一个指针变量指向普通内存以外的位置,如指向一个外围设备的内存映射端口,那么冗余装入和存储的优化对它来说可能是有害的。

你可能感兴趣的:(volatile brief explanation)