c++中volatile用于告诉编译器,所修饰的对象可能在程序的控制范围之外被改变,所以编译器应该避免对这个对象进行一些优化。
主要的用途:
1.防止编译器的优化,编译器在进行优化时可能认为某些变量的值在程序中不会发生变化,从而对变量进行一些优化。volatile可以告诉编译器变量可能在执行过程中被外部因素改变,因此每次都从内存中读取。
2.多线程中的可见性,当变量被多个线程共享时,volatile可以确保每个线程都能看到在新的值,而不是缓存中的旧值。但是volatile不能替代线程中的同步机制,比如互斥锁。