就像大家更熟悉的const一样,volatile是一个类型修饰符(type specifier)。它是被设计用来修饰被不同线程访问和修改的变量。
来源:互联网 发布:2.5平衡口耳机 知乎 编辑:程序博客网 时间:2024/05/20 07:34
就像大家更熟悉的const一样,volatile是一个类型修饰符(type specifier)。它是被设计用来修饰被不同线程访问和修改的变量。
#include <stdio.h>#include <setjmp.h>#include <stdlib.h>static jmp_buf buf; int main() { volatile int b; //对于volatile类型的变量,系统每次用到他的时候都是直接从对应的内存当中提取, //而不会利用cache当中的原有数值,以适应它的未知何时会发生的变化, //系统对这种变量的处理不会做优化——显然也是因为它的数值随时都可能变化的情况。 b =3; if(setjmp(buf)!=0) { printf("%d ", b); exit(0); } b=5; longjmp(buf , 1); return 0;} /*1.setjmp(j)设置“jump”点,用正确的程序上下文填充jmp_buf对象j。这个上下文包括程序存放位置、栈和框架指针,其它重要的寄存器和内存数据。当初始化完jump的上下文,setjmp()返回0值。 2. 以后调用longjmp(j,r)的效果就是一个非局部的goto或“长跳转”到由j描述的上下文处(也就是到那原来设置j的setjmp()处)。当作为长跳转的目标而被调用时,setjmp()返回r或1(如果r设为0的话)。(记住,setjmp()不能在这种情况时返回0。) 通过有两类返回值,setjmp()让你知道它正在被怎么使用。当设置j时,setjmp()如你期望地执行;但当作为长跳转的目标时,setjmp()就从外面“唤醒”它的上下文。你可以用longjmp()来终止异常,用setjmp()标记相应的异常处理程序。*/ 这个题目跟volatile关键字没有关系~volatile主要用在多线程里面,我是学c++的,不知道c里面是不是也是这样的
0 0
- 就像大家更熟悉的const一样,volatile是一个类型修饰符(type specifier)。它是被设计用来修饰被不同线程访问和修改的变量。
- 对const volatile修饰符共同修改变量的解释
- 类型修饰符(type specifier)
- C++ volatile类型修饰符(type specifier), 多线程
- 修改const修饰的变量
- some type specifier 类型修饰符
- const和volatile修饰同一个变量的问题
- const和volatile变量是否可以同时修饰一个变量
- volatile修饰的变量
- Volatile修饰的变量
- const, volatile同时修饰一个变量
- const volatile 同时修饰一个变量
- const修饰的变量
- 修改C中const修饰的变量
- mutable 修改const修饰过的变量
- const和volatile同时修饰同一个变量
- java变量修饰符volatile的使用和性能
- volatile修饰变量的用法。
- u-boot关闭中断
- u-boot关闭MMU和I/D Cach
- Linux内核驱动学习难点与学习方法
- 安装linux到开发板
- 将博客搬至CSDN
- 就像大家更熟悉的const一样,volatile是一个类型修饰符(type specifier)。它是被设计用来修饰被不同线程访问和修改的变量。
- C#综合性实验 - 文本编辑器
- applicationContext.xml文件如何共引用另一个applicationContext.xml文件中的bean
- UC笔试题(二)
- HDU 1010 Tempter of the Bone
- Decorrelating Semantic Visual Attributes by Resisting the Urge to Share 论文笔记
- C++模板浅谈
- C++[算法]不借助第三个参数,交换两个数的值
- [Oracle] 分析函数(4)- Order By字句