最近我正在阅读一些

Linux内核空间代码,我看到了这一点

uint64_t used;

uint64_t blocked;

used = atomic64_read(&g_variable->used); //#1

barrier(); //#2

blocked = atomic64_read(&g_variable->blocked); //#3

这段代码片段的语义是什么?确保#1在#3之前执行#2.

可是,我是一个乱七八糟的人,因为这样@H_403_6@

#A在64位平台中,将atomic64_read宏扩展为@H_403_6@used = (&g_variable->used)->counter // where counter is volatile.

在32位平台中,它被转换为使用锁cmpxchg8b.我假设这两个具有相同的语义,对于64位版本,我认为这意味着:@H_403_6@

>全部或全部,我们可以排除地址不对齐,字长大于cpu本机字大小的情况.

>无优化,强制cpu从内存位置读取.@H_403_6@

atomic64_read没有保留读取顺序的语义!见this@H_403_6@

#B屏障宏定义为@H_403_6@/* Optimization barrier */

/* The "volatile" is due to gcc bugs */

#define barrier() __asm__ __volatile__("": : :"memory")

从wiki this起只是防止gcc编译器重新排序读写.@H_403_6@

我困惑的是如何禁用cpu的重新排序优化?另外,我可以想到屏障宏是全面的?@H_403_6@

atomic在linux编译不通过,内存障碍和在linux上的atomic_t相关推荐

  1. linux查看进程的内存使用情况,[转]linux下查看进程内存使用情况

    动态查看一个进程的内存使用 1.top命令 top -d 1 -p pid [,pid ...] //设置为delay 1s,默认是delay 3s 如果想根据内存使用量进行排序,可以shift + ...

  2. linux查服务器总内存大小,怎么查看linux中的可用内存大小

    怎么查看linux中的可用内存大小 发布时间:2020-06-16 13:28:33 来源:亿速云 阅读:620 作者:鸽子 作为Linux用户,特别是管理员,我们需要检查系统使用多少内存资源以及有多 ...

  3. linux编译避免污染源码分离,如何避免linux上的系统标准C/C++库?

    我安装了新版本的GCC,这对我的linux系统造成了污染.我计划以更好的方式处理多个版本的GCC.我计划在/ opt / tools目录下安装所有不同的版本.然后我的项目makefile显式指定要使用 ...

  4. linux 运行长后内存就满了,关于Linux 内存的使用,你确定真的理解吗?

    原标题:关于Linux 内存的使用,你确定真的理解吗? 作者:coloriy

  5. linux编译时开启宏,【spec】Linux上编译安装的spec文件中的常用路径以及宏变量

    我们在Linux上利用 rpmbuild 构建 rpm 安装包时,通过命令rpm --showrc 查看实现代码,另外直接通过 rpm --eval "%{macro}"来查看具体 ...

  6. linux编译怎么选择cpu,使用cpuminer在Linux系统中用CPU挖矿

    所用的Linux系统是Ubuntu 16.04 LTS 64位版本,以下是使用cpuminer在Linux系统中用CPU挖矿的基本步骤. 1.注册账号 先到MinerGate注册账号,然后到这里就可以 ...

  7. linux编译freebsd,freebsd下作x86/arm linux的交叉编译器

    freebsd下作x86/arm linux的交叉编译器 2009-05-13 01:40:08来源:未知 阅读 () 以纯粹的源码编译交叉编译器,还是头一遭.以往都是利用目标主机上的头文件和库文件作 ...

  8. arm cef3 linux 编译_【学习笔记】CEF Linux编译

    源码编译部分转载:https://bitbucket.org/chromiumembedded/cef/wiki/MasterBuildQuickStart#markdown-header-linux ...

  9. Linux磁盘扇区和内存页,技术|检查linux中硬盘损坏的扇区和区块

    badblocks是linux及其类似的操作系统中,扫描检查硬盘和外部设备损坏扇区的命令工具.损坏的扇区或者损坏的区块是硬盘中因为永久损坏或者是操作系统不能读取的空间. Badblocks命令可以探测 ...

最新文章

  1. python爬取音乐_利用Python对网易云音乐进行爬取!无所不爬的爬虫啊!
  2. ALV OO的栏位属性
  3. XML Web Service 安全性
  4. Spark Java API:Transformation
  5. YbtOJ-森林之和【dp】
  6. “嘲羊群众”词条视频惹怒粉丝 百度知道向张艺兴道歉...
  7. 基于jQuery向下弹出遮罩图片相册
  8. ssis导入xml_SSIS XML目标
  9. 第一节:创建SpringBoot项目并运行HelloWorld
  10. Codeforces Round #295 (Div. 1) C. Pluses everywhere
  11. vim配置关于 map nmap vmap等
  12. OkHttp中的设计模式之一:Builder模式
  13. Gap Locks(间隙锁)
  14. 第一章: 准备面试要知己知彼
  15. 第九章-项目人力资源管理
  16. BentoML核心概念(二):API 和 IO 描述符
  17. 中国汽车流通协会:2018年7月二手车市场分析
  18. dnf鹰犬机器人补丁_DNF补丁大全DNF东方Projece界面补丁下载
  19. Python 酷Q qq机器人初学
  20. python语言合法命名是_Python命名规范

热门文章

  1. phoenix创建索引报错“ Mutable secondary indexes must have the hbase.regionserver.wal.codec property”
  2. 全球首款乘云而来的存储产品CDS诞生!
  3. 【开通指南】 实时计算 Flink 全托管版本
  4. 因云而生 全新视角看阿里云服务器硬件方升架构
  5. 超燃!支付宝技术双11纪录片《一心一役》全球独家首发
  6. 搜索引擎背后的原理和中文日志检索
  7. ECS 按量付费VPC实例停机不收费FAQ
  8. 基于TableStore构建简易海量Topic消息队列
  9. VMware为全球数字化基础架构提供原生安全
  10. 我竟然混进了 Python 高级圈子!