首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

atomic_fetch_sub

在头文件<stdatomic.h>中定义

C atomic_fetch_sub(volatile A * obj,M arg);

(1)

(自C11以来)

C atomic_fetch_sub_explicit(volatile A * obj,M arg,memory_order order);

(2)

(自C11以来)

将原来的值与旧的值的obj减法结果进行原子替换,并返回先前保存的值。操作是读取 - 修改 - 写入操作。第一个版本根据命令对内存进行访问,第二个版本根据内存访问内存访问。argobjobjmemory_order_seq_cstorder

这是为所有原子对象类型A定义的通用函数。参数是指向易失性原子类型的指针,以接受非易失性和易失性(例如内存映射I / O)原子变量的地址.M可以是非易失性 如果A是原子整数类型,则对应于A的原子类型;如果A是原子指针类型,则为ptrdiff_t。

对于有符号整数类型,算术定义为使用二进制补码表示。没有未定义的结果。对于指针类型,结果可能是一个未定义的地址,但操作没有未定义的行为。

参数

obj

-

指向要修改的原子对象的指针

arg

-

从存储在原子对象中的值中减去的值

order

-

此操作的内存同步排序:所有值都是允许的

返回值

由obj指向的原子对象先前保存的值。

References

  • C11标准(ISO/IEC 9899:2011):
    • 7.17.7.5 atomic_fetch和修改泛型函数(p: 284-285)

另请参阅

atomic_fetch_addatomic_fetch_add_explicit (C11)

atomic addition (function)

| atomic_fetch_sub,atomic_fetch_sub_explicit的C ++文档 |

扫码关注腾讯云开发者

领取腾讯云代金券