15.1.4  头文件中的模板函数及算术运算函数

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版本的存储(写)操作、即最终的存储(写)操作。(https://www.daowen.com)

——memory_order_consume:读取操作在指定内存区域是耗费内存的。

——memory_order_acquire、memory_order_acq_rel和memory_order_seq_cst:读取操作时,在指定内存区是获取内存操作。

下面的函数和上述两个函数的用法相同,此处仅列出其名称,不再详细讲述。

图示

图示

图示

图示

上述函数的整型实例化形式为:

图示

上述模板函数的指针形式为:

图示

图示

例15-1

图示

图示

例15-1的执行效果如图15-1所示。

图示

图15-1 例15-1的执行效果