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

丹阳网站建设机构主流的网站开发技术有

丹阳网站建设机构,主流的网站开发技术有,国外建筑网站app,高埗镇网站建设作用: 1.它用于修饰变量,告知编译器该变量的值可能会在程序的外部被改变,编译器不能对这个变量的访问进行优化。这是因为编译器通常会对代码进行优化,例如把变量的值缓存到寄存器中,但对于 volatile 变量,…

作用:

1.它用于修饰变量,告知编译器该变量的值可能会在程序的外部被改变,编译器不能对这个变量的访问进行优化。这是因为编译器通常会对代码进行优化,例如把变量的值缓存到寄存器中,但对于 volatile 变量,每次访问都要从内存中读取,以确保获取到最新的值。同时, volatile 还能防止编译器对涉及该变量的操作进行指令重排序。

#include <iostream>
#include <thread>
#include <chrono>
// 共享的volatile变量
volatile bool flag = false;
void waitForFlag() {
while (!flag) {
// 这里每次都会从内存读取flag的值,因为它是volatile的
}
std::cout << "Flag is set to true." << std::endl;
}
int main() {
std::thread t(waitForFlag);
std::this_thread::sleep_for(std::chrono::seconds(2));
flag = true;
t.join();
return 0;
}

在这个例子中, flag 变量被声明为 volatile 。子线程中的 while 循环会一直检查 flag 的值,直到它变为 true 。因为 flag 是 volatile ,编译器不会对 while 循环中 flag 的读取进行优化,会确保每次都从内存读取最新的值,这在多线程或硬件交互的场景下很重要。

2.volatile 可以用来防止编译器对指令进行重排序。在多线程或者中断处理的程序环境中,这种重排序可能会导致程序逻辑错误。 volatile 能够保证操作的顺序按照代码中的顺序执行,从而保证程序的正确性。

volatile 关键字与 const 关键字的区别:

1.const 关键字: 

const 修饰的变量是常量,在定义后不能被修改。它主要用于告诉编译器这个变量的值是固定的,编译器可以利用这一点进行一些优化,例如将变量的值替换到使用它的地方,而不用每次从内存读取。

2.volatile 关键字:

 volatile 修饰的变量是可变的,不过它强调变量的值可能会被程序外部(如硬件设备、其他线程或中断服务程序)改变。编译器不会对 volatile 变量进行优化,每次访问该变量时都会从内存中读取最新的值,并且不会对涉及该变量的操作进行指令重排序。

#include <iostream>
// const示例
void constExample() {
const int a = 10;
// a = 20;  // 这行代码会出错,因为不能修改const变量的值
std::cout << "The value of const variable a: " << a << std::endl;
}
// volatile示例
#include <thread>
#include <chrono>
volatile bool flag = false;
void volatileExample() {
std::thread t1( {
// 等待flag变为true
while (!flag) {
// 因为flag是volatile,每次循环都会从内存读取其最新值
}
std::cout << "Flag is now true." << std::endl;
});
// 主线程等待一段时间后将flag设为true
std::this_thread::sleep_for(std::chrono::seconds(2));
flag = true;
t1.join();
}
int main() {
constExample();
volatileExample();
return 0;
}

在这个示例中, constExample 函数展示了 const 变量不能被修改的特性。 volatileExample 函数通过一个简单的多线程场景展示了 volatile 变量的作用,线程 t1 会一直检查 volatile 变量 flag 的值,直到它被主线程修改为 true 。每次检查时,都会从内存读取 flag 的最新值。

http://www.yayakq.cn/news/361981/

相关文章:

  • 小游戏网站欣赏在线画流程图的网站
  • 免费网站建设自助建站承德公司做网站
  • 西安网站建设现状详情页设计英文翻译
  • 用瀑布流做的美食网站陕西省门户网站建设政策
  • 软文推广范文网站seo软件
  • 新河网站建设wordpress如何仿站
  • 整站seo优化推广域名空间网站
  • 网站多少钱一米网易企业邮箱满了怎么办
  • 建设工程专注在哪个网站门户网站建设必要性
  • 东莞网站排名优化公司做兼职网站赚钱吗
  • wordpress网站导航子菜单如何干电商
  • 18芯城网站开发案例成立公司协议
  • 襄阳门做网站wordpress伪静态配置不了
  • 孝感网站建设 付款方式 银行wordpress 广告
  • 湖北省和住房建设厅官方网站网络推广流量技巧
  • 如何做一个论坛网站做一个小程序需要多少钱?
  • 龙口有没有做网站的特价旅游机票网站建设
  • 连云港做网站哪家好公司网站的作用
  • 游戏网站上图片动态怎么做的网站关键词检测
  • 可以免费申请试用的网站电子商城网站开发项目描述
  • 网站建设 物流wordpress 翻译工具
  • wordpress网站服务时间wordpress 如何重新安装
  • 桂林网站上海网站设计印刷拆除
  • 培训教育类网站模板下载关键词优化的方法有哪些
  • 温州高端网站建设如何进行网站设计规划
  • 松江车墩网站建设wordpress um插件
  • 苏州做网站推广的公司财务软件排行榜前十名
  • 网站搜索框如何做wordpress菜单扩展
  • 哪个网站上可以做代打2023年免费域名推荐
  • 网站权重有什么用wordpress搬瓦工