15.1.4 头文件中的模板函数及算术运算函数
该函数用于将原子的封装值增加T类型(第二个参数)参数的具体数值。默认内存序是memory_order_seq_cst。该函数等价于std::atomic对象的atomic::fetch_add和atomic::op-erator +=成员函数。
该函数的功能和atomic_fetch_add()相似,仅仅是增加了可以设定内存序的参数。通常的内存序参数如下:
关于上述几种内存序的英文原版说明如下:
——memory_order_relaxed:no operation orders memory.
——memory_order_release,memory_order_acq_rel,andmemory_order_seq_cst:astore oper-ation performs a release operation on the affected memory location.
——memory_order_consume:a load operation performs a consume operation on the affected memory location.
——memory_order_acquire,memory_order_acq_rel,andmemory_order_seq_cst:a load oper-ation performs an acquire operation on the affected memory location.
本书将其翻译为:
——memory_order_relaxed:没有内存操作顺序,可以任意排序。
——memory_order_release、memory_order_acq_rel和memory_order_seq_cst:在指定内存位置执行release版本的存储(写)操作、即最终的存储(写)操作。
——memory_order_consume:读取操作在指定内存区域是耗费内存的。
——memory_order_acquire、memory_order_acq_rel和memory_order_seq_cst:读取操作时,在指定内存区是获取内存操作。
下面的函数和上述两个函数的用法相同,此处仅列出其名称,不再详细讲述。
上述函数的整型实例化形式为:
上述模板函数的指针形式为:
例15-1
例15-1的执行效果如图15-1所示。
图15-1 例15-1的执行效果