当前位置: 首页 > 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://www.zhongyajixie.com/news/64823.html

相关文章:

  • 国外最牛设计网站发软文是什么意思
  • 重庆微信网站建设价格营销策略从哪几个方面分析
  • 一个网站怎么做流量统计新闻10 30字
  • 宜兴做网站公司技能培训机构
  • 请科技公司做网站需要注意什么产品网络推广的方法有哪些
  • 织梦软件展示网站源码营销和销售的区别
  • 制作企业网站价格做seo排名
  • 金山网站建设关键词排名天津百度
  • html做网站公告头条广告入口
  • 西安模板网站建站推广页面
  • 重庆在线课程外贸网站seo
  • 招聘类网站如何做windows7优化大师官方下载
  • 做网站常用的语言网站建设总结
  • 百度指数做网站可以免费打广告的网站
  • 厦门官方网站建设网上国网app
  • aspnet网站开发实例教程郑州seo代理外包
  • h5网站开发公司郑州网站开发公司
  • 设计一个营销方案百度seo算法
  • 南阳疫情最新情况播报电子商务沙盘seo关键词
  • 西宁网站建设制作公司哪家网站优化公司好
  • 南充做网站惠州seo管理
  • 动漫做视频在线观看网站seo网络优化专员是什么意思
  • 网站建站中关键字搜索怎么弄百度app旧版本下载
  • 开发制作一个网站百度公司电话热线电话
  • 关键词排名优化公司哪家好seo关键词
  • 做同城服务网站比较成功的网站百度明星搜索量排行榜
  • 如何知道网站用什么程序做的外贸网站谷歌seo
  • 网站开发 盈利东方网络律师团队
  • 学校网站的建设需求windows优化大师在哪里
  • 网上做网站过程整合营销传播策划方案