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

30、memory-order-relaxed

使用C++标准库中的std::thread来创建线程,并且使用std::atomic来确保变量的原子性。

#include <iostream>
#include <thread>
#include <atomic>std::atomic<int> x = 0;     // global variable
std::atomic<int> y = 0;     // global variablevoid thread1() {int r1 = y.load(std::memory_order_relaxed); // Ax.store(r1, std::memory_order_relaxed);     // B
}void thread2() {int r2 = x.load(std::memory_order_relaxed); // Cy.store(42, std::memory_order_relaxed);     // D
}int main() {std::thread t1(thread1);std::thread t2(thread2);t1.join();t2.join();std::cout << "x: " << x.load() << ", y: " << y.load() << std::endl;return 0;
}

这个代码创建了两个线程,分别执行thread1thread2函数。std::atomic确保了对变量xy的操作是原子的。

最后,主线程等待两个线程完成,并输出变量xy的值。

相关文章:

  • 从零开始开发纯血鸿蒙应用之网络检测
  • A Execllent Software Project Review and Solutions
  • 【物联网-ModBus-RTU
  • 【Go语言基础【14】】defer与异常处理(panic、recover)
  • 【HarmonyOS 5】拍摄美化开发实践介绍以及详细案例
  • 关于datetime获取时间的问题
  • n8n + AI Agent:AI 自动化生成测试用例并支持导出 Excel
  • 洛谷P12170 [蓝桥杯 2025 省 Python B] 攻击次数
  • PLC有脉冲输出,但伺服电机无法旋转
  • 数组名作为函数参数详解 —— 指针退化及遍历应用示例
  • 一款“短小精悍的”手机录屏软件
  • Linux与Windows切换使用Obsidian,出现 unexplained changes 问题的解决
  • Postman测试学习(1)
  • GPU集群故障分析:大型AI训练中的硬件问题与影响
  • frida简介及环境搭建
  • 「完整」AI文档库 | 5月4日发布,东吴证券:《AI Agent深度二:2025 Agent元年,AI从L2向L3发展》
  • C# 关于CS0433错误的解决方法
  • c++ 单例模式
  • Qwen 大模型-对话模板中system与user的区别解析
  • 孙溟㠭浅析清朝“徽派”篆刻
  • 教人怎么做网页的网站/成都网络营销公司
  • 网站制作公司下/搜索关键词怎么让排名靠前
  • 用模块做网站/百度软件应用市场
  • 政府网站开发报告/加入网络营销公司
  • 网站建设内部问卷/百度站长工具怎么关闭
  • 搜索引擎和浏览器/河南郑州网站推广优化外包