?
Ce document utilise Manuel du site Web PHP chinois Libérer
在頭文件<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指向的原子對象先前保存的值。
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 ++文檔 |