c/c++ volatile关键字个人总结

如题所述

第1个回答  2022-06-28
最近有同事提到了volatile关键字,所以感兴趣就上网去学习了下,但是在网上看的云里雾里的,因为很多帖子都是明确说明volatile的定义了,然后就各种给你讲例子它应该如何应用到多线程中使用,我个人也写了例子,程序运行没有实现出他们多线程的效果。不过看了很多帖子也花费了很多时间,就做一个总结吧。

1:volatile的历史

volatile诞生于单cpu核心时代,为保持兼容,一直只是针对编译器的,对cpu无影响。

2:volatile在c/c++中的作用:

1.告诉编译器不要将定义的变量优化掉。

2.告诉编译器总是从缓存取被修饰的变量值,而不是寄存器取值。

注释:volatile针对的编译器。很多帖子上升到内存屏障,保证执行乱序的高度了,你们帮忙吹牛逼不犯法么?

3:volatile的应用场景:

(1)信号处理程序。

(2)与硬件打交道(嵌入式开发)

(3)setjmp和longjmp(函数间跳转关键字)

注释:如果你搞嵌入式程序开发可以更多的关注一下,如果不是,没有必要过多关注。他不会在多线程上对程序起到多么牛逼的好处,起码我自己写程序没有。我的电脑是两核的。不高,难道用8核的会有不一样的效果?
相似回答