atomic_fetch_sub, atomic_fetch_sub_explicit
|
Definido en el encabezado
<stdatomic.h>
|
||
|
C atomic_fetch_sub
(
volatile
A
*
obj, M arg
)
;
|
(1) | (desde C11) |
|
C atomic_fetch_sub_explicit
(
volatile
A
*
obj, M arg,
memory_order
order
)
;
|
(2) | (desde C11) |
Reemplaza atómicamente el valor apuntado por
obj
con el resultado de la resta de
arg
del valor anterior de
obj
, y devuelve el valor que
obj
contenía previamente. La operación es una operación de lectura-modificación-escritura. La primera versión ordena los accesos a memoria según
memory_order_seq_cst
, la segunda versión ordena los accesos a memoria según
order
.
Esta es una
función genérica
definida para todos los
tipos de objetos atómicos
A
. El argumento es un puntero a un tipo atómico volátil para aceptar direcciones de objetos atómicos tanto no volátiles como
volátiles
(por ejemplo, E/S mapeadas en memoria), y se preserva la semántica volátil al aplicar esta operación a objetos atómicos volátiles.
M
es o bien el tipo no atómico correspondiente a
A
si
A
es un tipo entero atómico, o
ptrdiff_t
si
A
es un tipo de puntero atómico.
No está especificado si el nombre de una función genérica es una macro o un identificador declarado con vinculación externa. Si se suprime una definición de macro para acceder a una función real (por ejemplo, entre paréntesis como ( atomic_fetch_sub ) ( ... ) ), o un programa define un identificador externo con el nombre de una función genérica, el comportamiento no está definido.
Para los tipos de enteros con signo, la aritmética está definida para usar representación en complemento a dos. No hay resultados indefinidos. Para los tipos de puntero, el resultado puede ser una dirección indefinida, pero las operaciones por lo demás no tienen comportamiento indefinido.
Contenidos |
Parámetros
| obj | - | puntero al objeto atómico a modificar |
| arg | - | el valor a restar del valor almacenado en el objeto atómico |
| order | - | el orden de sincronización de memoria para esta operación: se permiten todos los valores |
Valor de retorno
El valor mantenido previamente por el objeto atómico apuntado por
obj
.
Referencias
- Estándar C17 (ISO/IEC 9899:2018):
-
- 7.17.7.5 Las funciones genéricas atomic_fetch y modify (p: 208)
- Estándar C11 (ISO/IEC 9899:2011):
-
- 7.17.7.5 Las funciones genéricas atomic_fetch y modify (p: 284-285)
Véase también
|
suma atómica
(función) |
|
|
Documentación de C++
para
atomic_fetch_sub
,
atomic_fetch_sub_explicit
|
|