5.2.5 标准的原子整型的相关操作

如同普通的操作集合一样(load(), store(), exchange(), compare_exchange_weak(), 和 compare_exchange_strong()),在 std::atomic<int> 和 std::atomic<unsigned long long> 也 是有一套完整的操作可以供使用:fetch_add(), fetch_sub(), fetch_and(), fetch_or(), fetch_xor(),还有复合赋值方式((+=, -=, &=, |=和^=),以及++和--(++x, x++, --x和x--)。虽然对于普通的整型来说,这些复合赋值方式还不完全,但也十分接近完整了:只有除法、乘法 和移位操作不在其中。因为,整型原子值通常用来作计数器,或者是掩码,所以以上操作的 缺失显得不是那么重要;如果需要,额外的操作可以将compare_exchange_weak()放入循环 中完成。

对于std::atomic<T*>类型紧密相关的两个函数就是fetch_add()和fetch_sub();函数原子化操作,并且返回旧值,而符合赋值运算会返回新值。前缀加减和后缀加减与普通用法一样:++x 对变量进行自加,并且返回新值;而x++对变量自加,返回旧值。正如你预期的那样,在这两 个例子中,结果都是相关整型的一个值。

我们已经看过所有基本原子类型;剩下的就是std::atomic<>类型模板,而非其特化类型。那么接下来让我们来了解一下std::atomic<> 类型模板。

5.2.5 标准的原子整型的相关操作相关推荐

  1. JavaScript 32位整型无符号操作

    在 JavaScript 中,所有整数字变量默认都是有符号整数,这意味着什么呢? 有符号整数使用 31 位表示整数的数值,用第 32 位表示整数的符号,0 表示正数,1 表示负数. 数值范围从 -2^ ...

  2. python长整型怎么用_Python整型运算之布尔型、标准整型、长整型操作示例

    导读热词 本文实例讲述了Python整型运算之布尔型.标准整型.长整型操作.分享给大家供大家参考,具体如下: #coding=utf8 def integerType(): ''''' 布尔型: 该值 ...

  3. 国际绝对音名十二等律标准对照音高频率的宏定义(32位无符号整型精度、十二等律体系、A4=440.01000Hz)

    国际绝对音名十二等律标准对照音高频率的宏定义(32位无符号整型精度.十二等律体系.A4=440.01000Hz) 代码如下: #ifndef __PITCH_H__ #define __PITCH_H ...

  4. python 长整型_Python整型运算之布尔型、标准整型、长整型操作示例

    本文实例讲述了Python整型运算之布尔型.标准整型.长整型操作.分享给大家供大家参考,具体如下: #coding=utf8 def integerType(): ''''' 布尔型: 该值的取值范围 ...

  5. python长整型怎么用_Python整型:布尔型、标准整型、长整型操作实例

    #coding=utf8 def integerType(): ''' 布尔型: 该值的取值范围只有两个值:True(1).False(0) ''' Tbool=True Fbool=False pr ...

  6. Go 学习笔记(4)— Go 标识符、数据类型之间转换、布尔型、整型、浮点型、interface 类型

    1. 标识符整体分类 Go 标识符整体分类如下图所示: 2. 数据类型分类 Go 语言按类别有以下几种数据类型: 类型 描述 布尔型 布尔型的值只可以是常量 true 或者 false 数字类型 整型 ...

  7. 语言转4字节数据整型_R语言与RGui平台_数据类型_向量_4

    计算机语言RGui平台上的R语言__数据类型_向量_4 R语言进阶4_数据类型_向量1 咱们而可以从自然语言(汉语.英.法.俄.德.日.拉丁.伊斯兰.等等)的基本特征来看--词汇.句子.段落.结构.文 ...

  8. c语言如何将浮点数转换为字节,浅谈C语言整型与浮点型转换

    本篇博客将阐述.讨论的内容: ●int int的范围根据计算机的不同存在16位或32位的差异,以16位举例,最大值为1111 1111 1111 1111,也就是65535,如果出现65536,就会溢 ...

  9. java 取整型的低八位_Java 基础(十五)并发工具包 concurrent

    本文目录: java.util.concurrent - Java 并发包简介 阻塞队列 BlockingQueue 数组阻塞队列 ArrayBlockingQueue 延迟队列 DelayQueue ...

最新文章

  1. mysql 怎么格式化输出_怎么格式化MySQL输出代码
  2. Docker + FastDFS + Spring Boot 一键式搭建分布式文件服务器
  3. MySQL MGR与Galera性能测试
  4. 云原生 - Istio可观察性之监控(四)
  5. Python之List和Tuple类型(入门3)
  6. 云和恩墨技术通讯:Oracle AMM自动内存管理引起数据库阻塞
  7. mysql 出现 “1067 - Invalid default value for ‘UPDATE_TIME‘ “ 错误提示的解决办法
  8. python 输出list到txt_python脚本生成caffe train_list.txt的方法
  9. GateWay程序分析04_Delay.h
  10. $《第一行代码:Android》读书笔记——第5章 Broadcast
  11. delphixe android服务,delphi xe10 android服务gps [复制]
  12. 黑鲨官网装机大师工具如何制作u盘启动盘,u盘启动盘制作方法
  13. 【Android -- 性能优化】启动速度分析工具 — TraceView
  14. 「PHP基础知识」PHP中的注释+PHP直播源码直播系统源码
  15. 免费开源平台 CESIUM GIS、Worldwind、skyline、mapgis、mapinfo、ARCGIS、OSGEARTH、UNIGINE、unity3d、ossimplant
  16. 如何制作一个微信小程序【微信小程序是怎么做的】
  17. 分享6款好用并免费的远程管理工具
  18. 全球域名后缀注册量排行榜!
  19. 如何给php打补丁,CSS_教你快速掌握如何使用“Opatch”打补丁,在实际的工作和学习中,很多 - phpStudy...
  20. Fuchsia OS 现已支持第二代 Nest Hub

热门文章

  1. msyql之解决mysql出现ERROR 1698 (28000): Access denied的问题
  2. Ubuntu替换pip源
  3. Exchange Server 2016管理系列课件03.管理邮箱配额限制
  4. Eclipse-阶段1-配置问题解决
  5. Shell脚本学习-阶段二十九-运维使用的
  6. mysql 锁监视器_MySQL锁监视器
  7. [转]jQuery: how to get which button was clicked upon form submission?
  8. PHP利用memcache缓存技术提高响应速度
  9. easyui tree的简单使用
  10. IC设计EDA软件虚拟机环境配置与安装教程