善变的不只是女人,还有volatile ---偷来的标题名

news/2024/7/6 4:24:19

下面代码包括 2 个函数,第一个函数是中断服务程序用于从温度传感器中读 取数据,第二个函数比较温度是否一致。它是否包括错误?如有,该如何修正?

 1 static int iTemperatures[2];
 2 
 3 void __IRQ__vReadTemperatures(void)
 4   {
 5         iTemperatures[0] = /* Get Temperature from Sensor */
 6         iTemperatures[1] = /* Get Temperature from Sensor */
 7    }
 8    
 9  void main(void)
10   {
11         while (1)
12         {
13         if (iTemperatures[0]  != iTemperatures[1])
14         /* Alarm */
15         }
16   }

 

 

错误的主要原因是因为,volatile

(中断isr中引用的变量多线程中共用的变量硬件会更改的变量)都是编译器在编译时无法预知的更改,此时应用使用volatile告诉编译器这个变量属于这种(可变的、易变的)情况。

转载于:https://www.cnblogs.com/yr-linux/p/5079908.html


http://www.niftyadmin.cn/n/1974377.html

相关文章

Java线程:总结

线程的状态转换图: new:新建状态 Runnable:就绪状态。线程对象创建后,其他线程调用了该对象的start()方法。该状态的线程位于可运行线程池中,变得可运行,等待获取CPU的使用权。 Running:运行状态…

class文件的反编译过程

前言 这几天由于工作需要进行了一些反编译的工作,之前的同事离职了,负责的项目代码转交给我,这个项目好长时间没有用了,在看源码的过程中发现里边少了几个类,几经周折找到了以前编译好的jar包。要想恢复就智能进行反编…

2014-11-6Android学习------Spinner下拉选择框控件学习

写一篇文章很辛苦啊!!! 转载请注明,联系请邮件nlp30508qq.com 我学习Android都是结合源代码去学习,这样比较直观,非常清楚的看清效果,觉得很好,今天的学习源码是网上找的源码 百度搜…

诡异的 unnest 函数

为什么80%的码农都做不了架构师?>>> 发现函数 unnest 定义如下: CREATE OR REPLACE FUNCTION unnest(anyarray)RETURNS SETOF anyelement AS array_unnestLANGUAGE internal IMMUTABLE STRICTCOST 1ROWS 100; 为了可读性,这是还原…

简简单单小文章-声明

前言 好长时间也没写文章了,原因有很多,就不在这说了,好不容易有个空了就拿起了java基础翻看着,然后也就有了这篇文章。 正文 java中常用的声明有三种方式,那么这三种方式有什么区别呢?对于jvm熟悉的朋友…

2014-11-6Android学习------Spinner下拉选择框控件学习(二)---监听事件

写一篇文章很辛苦啊!!! 转载请注明,联系请邮件nlp30508qq.com 我学习Android都是结合源代码去学习,这样比较直观,非常清楚的看清效果,觉得很好,今天的学习源码是网上找的源码 百度搜…

[python]代码中包含中文,提示:SyntaxError: Non-ASCII character '\xcd'

解决方法: 把文件编码方式改为gbk即可。在代码开头写上: # codinggbk 转载于:https://www.cnblogs.com/sophia194910/p/5085218.html

一文彻底搞懂正向代理和反向代理

前言 多长时间不写博客了?反正一双手是数不过来了,今天就顺手写点小知识点。主要想说的是正向代理和反向代理。 正文 代理 首先先说概念: 代理的概念是什么呢? 百度百科提供的说明: 代理服务器(Proxy S…