首页 > 其他分享 >while循环条件不成立却无法跳出死循环的问题

while循环条件不成立却无法跳出死循环的问题

时间:2022-10-15 22:59:04浏览次数:43  
标签:跳出 中断 while 循环 volatile 内存 寄存器 死循环 加载

在进入循环的时候,实际上是将A从内存加载到寄存器里面运行的,在整个循环中,A这个变量都只是在读取寄存器里面的值。
而当进入中断的时候,中断里面会从内存加载A到寄存器,修改完之后又存到内存里,然后退出中断,再回到循环里面。但这个时候循环里使用的A并没有重新从内存加载A这个变量,所以一直都在循环里面。

 

解决方法:
  中断中改变的变量定义前加上volatile,详细理解自行查找volatile的用法

一般说来,volatile用在如下的几个地方:
  1、中断服务程序中修改的供其它程序检测的变量需要加volatile;
  2、多任务环境下各任务间共享的标志应该加volatile;
  3、存储器映射的硬件寄存器通常也要加volatile说明,因为每次对它的读写都可能有不同意义;另外,以上这几种情况经常还要同时考虑数据的完整性(相互关联的几个标志读了一半被打断了重写),在1中可以通过关中断来实现,2 中可以禁止任务调度,3中则只能依靠硬件的良好设计了。

标签:跳出,中断,while,循环,volatile,内存,寄存器,死循环,加载
From: https://www.cnblogs.com/xiaozeblogs/p/16795264.html

相关文章

  • Java中for循环中用break是跳出内层循环还是外层循环
    背景:我们知道:for循环中常用“continue”跳过当前循环执行下个循环,常用“break”跳出循环,但是在for循环嵌套中break是仅跳出内层循环还是跳出所有循环呢?测试:public......
  • Always conda while python
    记录此篇防止遗忘主要是为了避免python包的矛盾、依赖等问题,要尽量保证环境的纯粹,一个项目一个环境使用conda会很有利,关于conda的使用已经有前辈的博客:https://www.cnbl......
  • 循环结构(do-while结构)
    1.作用:将一段代码反复执行指定的次数2.语法:do{循环体};while(条件表达式);3.特点:循环体无论如何都会先循环一次如果程序至少需要执行一次,最好使用do-while结构4.例子#include<st......
  • Java-Day05 while/do-while/多重嵌套例题/break/continue
    学习时间:2022/10/10-2022/10/11一、while循环1.结构:①初始化条件While(②循环条件[布尔类型]){③循环体;④迭代条件;}执行过程:①-②......
  • Java基础语法 DoWhile循环
    DoWhilepackageBasicGrammar.day05;/*do-while循环的使用一、循环结构的4个要素①初始化条件②循环条件--->是boolean类型③循环体④迭代条件二、do-whi......
  • Java基本语法 while循环
    while循环packageBasicGrammar.day05;/*While循环的使用一、循环结构的4个要素①初始化条件②循环条件--->是boolean类型③循环体④迭代条件二、while......
  • 13. JS do while循环语句的用法
    1.前言JSdowhile循环与 while循环非常相似,不同之处在于,dowhile循环会先执行循环中的代码,然后再对条件表达式进行判断。因此,无论条件表达式是真还是假,dowhile循......
  • 12. JS while循环语句的用法
    1.前言循环就是重复做一件事,在编写代码的过程中,我们经常会遇到一些需要反复执行的操作,例如遍历一些数据、重复输出某个字符串等,如果一行行的写那就太麻烦了,对于这种重复......
  • 07@流程控制之while循环
    文章目录​​流程控制之while循环​​​​一、语法​​​​二、continue与break​​​​三、案例​​​​1、案例1:web监控状态​​​​2、案例:(猜数字)​​​​3、案例:whil......
  • while循环语句
    注意事项条件需提供布尔类型结果,True继续,False停止空格缩进不能忘请规划好循环终止条件,否则将无限循环案例1i=0whilei<100:print("小美,我喜欢你")......