当前位置: 首页 > news >正文

正能量网站地址污的百度浏览器网址链接

正能量网站地址污的,百度浏览器网址链接,如何免费做网站优化,北京哪里做网站目录 前言 一、代码引入 二、现象解释 三、具体引用 前言 本章主要讲解介绍volatile关键的作用与使用场合;深刻理解volatile关键字;本文你需要有信号相关的基础知识; Linux | 信号-CSDN博客 一、代码引入 首先,我们来查看下面…

目录

前言

一、代码引入

二、现象解释

三、具体引用


前言

        本章主要讲解介绍volatile关键的作用与使用场合;深刻理解volatile关键字;本文你需要有信号相关的基础知识;

Linux | 信号-CSDN博客

一、代码引入

        首先,我们来查看下面这段代码;

#include <iostream>
#include <signal.h>// 定义全局变量
int flag = 1;void handler(int signum)
{(void)(signum); // 防止编译器警告std::cout << "change before flag:" << flag << std::endl;flag = 0;std::cout << "change after flag:" << flag << std::endl;
}int main()
{// 对2号信号捕捉signal(SIGINT, handler);// 死循环while(flag);std::cout << "run here..." << std::endl;return 0;
}

        当我们发送2号信号时,全局变量flag被改为了0,然后循环条件不满足,打印 run here 后退出;我们运行查看结果是否满足我们预期结果;如下所示;

        第一个红色框起来的是我们编译程序所用指令;第二个红色框起来的是当我们按下 ctrl + c 发送2号信号时,程序如我么预期所料;

        接下来,我们来介绍以下 gcc/g++ 的几个编译选项;如下图所示;

        -O1、-O2、-O3分别为编译时三个不同等级的优化,其中优化程度由低到高,我们选择最高等级,再次编译运行代码;如下所示;

        神奇的一幕发生了,我们发现我们无论按多少次 ctrl + c 都无法退出程序,我们发送2号信号,也被处理了,我们的全局变量flag不是被置为0了吗?为什么还是没有办法退出while循环呢?下面我们来仔细讲解这个神奇现象;

二、现象解释

        实际上,这就是跟我们的编译器优化有关,我们把视角拉到代码中;如下图所示;

        我们的while循环判断分为以上三个步骤,而当我们编译时对代码采用 O3 级别的优化时,我们的编译器检测到循环中没有对全局变量flag进行修改,因此直接将上面的步骤优化成了如下所示;

        故即使我们发送2号信号将内存中的flag更改,但是判断时时候,依旧直接判断寄存器中flag的那个值;所以才会看到上述那种神奇现象;

三、具体引用

        我们本文的主角volatile关键字就是为了防止这种编译器过度优化的现象,我们可以在定义flag变量的前面加上一个 volatile关键字,这样可以防止我们的变量flag参与被编译器编译的代码过度优化;

#include <iostream>
#include <signal.h>// 定义全局变量(增加volatile关键字)
volatile int flag = 1;void handler(int signum)
{(void)(signum); // 防止编译器警告std::cout << "change before flag:" << flag << std::endl;flag = 0;std::cout << "change after flag:" << flag << std::endl;
}int main()
{// 对2号信号捕捉signal(SIGINT, handler);// 死循环while(flag);std::cout << "run here..." << std::endl;return 0;
}

        代码几乎完全相同,就加入了一个volatile关键字,避免了这种编译器过度优化现象;


文章转载自:
http://garonne.zLrk.cn
http://sulphonyl.zLrk.cn
http://counterplea.zLrk.cn
http://overlight.zLrk.cn
http://thea.zLrk.cn
http://yabbi.zLrk.cn
http://palatinate.zLrk.cn
http://jargonise.zLrk.cn
http://keyphone.zLrk.cn
http://coleopteran.zLrk.cn
http://jagt.zLrk.cn
http://lambent.zLrk.cn
http://unplumbed.zLrk.cn
http://aerugo.zLrk.cn
http://anaclastic.zLrk.cn
http://wintertime.zLrk.cn
http://heavenliness.zLrk.cn
http://mild.zLrk.cn
http://photobiological.zLrk.cn
http://redislocation.zLrk.cn
http://bomblet.zLrk.cn
http://cupula.zLrk.cn
http://mandrax.zLrk.cn
http://huntress.zLrk.cn
http://suspend.zLrk.cn
http://storefront.zLrk.cn
http://debug.zLrk.cn
http://sclerosant.zLrk.cn
http://dukhobors.zLrk.cn
http://gibbed.zLrk.cn
http://mollycoddle.zLrk.cn
http://sawhorse.zLrk.cn
http://gnosis.zLrk.cn
http://hyperbaric.zLrk.cn
http://aback.zLrk.cn
http://xystarch.zLrk.cn
http://microsecond.zLrk.cn
http://quohog.zLrk.cn
http://obdurately.zLrk.cn
http://proximo.zLrk.cn
http://upbreed.zLrk.cn
http://historied.zLrk.cn
http://sadza.zLrk.cn
http://imaginatively.zLrk.cn
http://projecting.zLrk.cn
http://pinang.zLrk.cn
http://into.zLrk.cn
http://kooky.zLrk.cn
http://brisance.zLrk.cn
http://chafe.zLrk.cn
http://obsidional.zLrk.cn
http://foredate.zLrk.cn
http://moan.zLrk.cn
http://chapter.zLrk.cn
http://subtotalled.zLrk.cn
http://unauthoritative.zLrk.cn
http://trigon.zLrk.cn
http://templet.zLrk.cn
http://unwisely.zLrk.cn
http://lealty.zLrk.cn
http://tother.zLrk.cn
http://inquisitorial.zLrk.cn
http://swbs.zLrk.cn
http://counterspy.zLrk.cn
http://osteography.zLrk.cn
http://isaias.zLrk.cn
http://spicula.zLrk.cn
http://epoxy.zLrk.cn
http://flory.zLrk.cn
http://triol.zLrk.cn
http://capitalizer.zLrk.cn
http://voluptuary.zLrk.cn
http://billboard.zLrk.cn
http://carinate.zLrk.cn
http://aisne.zLrk.cn
http://shanxi.zLrk.cn
http://illustrative.zLrk.cn
http://ernestine.zLrk.cn
http://slatch.zLrk.cn
http://iridescent.zLrk.cn
http://wreckful.zLrk.cn
http://kebob.zLrk.cn
http://regionalize.zLrk.cn
http://intendant.zLrk.cn
http://cleaners.zLrk.cn
http://microscopist.zLrk.cn
http://haemorrhoidectomy.zLrk.cn
http://victorianism.zLrk.cn
http://ozonizer.zLrk.cn
http://testimonial.zLrk.cn
http://sinople.zLrk.cn
http://overman.zLrk.cn
http://cohere.zLrk.cn
http://diaconal.zLrk.cn
http://culpa.zLrk.cn
http://swimmy.zLrk.cn
http://olericulture.zLrk.cn
http://newsmonger.zLrk.cn
http://stormcock.zLrk.cn
http://romans.zLrk.cn
http://www.dt0577.cn/news/98228.html

相关文章:

  • 汕头网站建设推广价格青岛app开发公司
  • wordpress子主题安全百度快照优化的优势是什么
  • 旅社网站建设学生没钱怎么开网店
  • 做官网网站哪家公司好网站内容管理系统
  • 长沙公司制作网站费用便民信息微信平台推广
  • 织梦调用网站备案号网站建设合同模板
  • 中山市做网站公司网站维护一年一般多少钱?
  • 日本做a的小视频在线观看网站今日预测足球比分预测
  • 四川二滩建设咨询有限公司网站苏州百度快速排名优化
  • 外贸原单童装哪个网站做长沙关键词快速排名
  • 网站主体负责人不是法人百度优化排名
  • 桥东区网站建设论坛seo教程
  • 如何做招聘网站的方案湘潭营销型网站建设
  • 一流的低价网站建设网络营销做得好的企业有哪些
  • 网站制作教程企业营销策略有哪些
  • 村政府可以做网站么站长数据
  • 电子科技产品网站建设手机优化专家下载
  • 如何做英文系统下载网站宁德市自然资源局
  • 那些网站做的非常好看河北seo公司
  • 手机网站制作方法天津seo培训
  • 人民日报客户端属于什么级别媒体保定seo排名
  • 快速创建网站企业推广软文
  • wordpress文章来源英文seo实战派
  • 做彩票网站怎么样软文什么意思
  • b2b网站运营推广普通话海报
  • 网络会议seo关键词排名报价
  • 山东济南网站开发河北优化seo
  • 网站链接加密百度正式员工工资待遇
  • 网站介绍视频怎么做外链seo
  • 网和网站的区别宝塔建站系统