如果不加这个voliatile修饰,程序是利用catch当中的数据,那个可能是过时的了,加了 voliatile,就在需要用的时候,程序重新去那个地址去提取,保证是最新的。如:while((unsigned char *)0x20)时,有时系统可能不真正去读0x20的值,而是用第一次读出的值,如果这样,那这个循环可能是个死循环。用了volatile 则要求每次都去读0x20的实际值。
1. volatile变量可变允许除了程序之外的比如硬件来修改他的内容 。
2. 访问该数据任何时候都会直接访问该地址处内容,即通过cache提高访问速度的优化被取消,提高访问速度,并且确保当前读取到的值是最新的数据值。
本文深入解析Volatile关键字的作用,阐述其如何确保数据的最新性和一致性,特别是在多线程环境下,防止编译器和处理器对内存操作进行优化而导致的数据不一致问题。通过实例说明Volatile变量在硬件修改内容和强制读取实际地址值的应用。
393

被折叠的 条评论
为什么被折叠?



