Namespaces
Variants

std::atomic_ref<T>:: fetch_add

From cppreference.net
Concurrency support library
Threads
(C++11)
(C++20)
this_thread namespace
(C++11)
(C++11)
Cooperative cancellation
Mutual exclusion
Generic lock management
Condition variables
(C++11)
Semaphores
Latches and Barriers
(C++20)
(C++20)
Futures
(C++11)
(C++11)
(C++11)
Safe reclamation
Hazard pointers
Atomic types
(C++11)
(C++20)
Initialization of atomic types
(C++11) (deprecated in C++20)
(C++11) (deprecated in C++20)
Memory ordering
(C++11) (deprecated in C++26)
Free functions for atomic operations
Free functions for atomic flags
Proporcionado solo cuando T es un tipo aritmético distinto de cv bool o un tipo puntero-a-objeto
value_type fetch_add ( difference_type arg,

std:: memory_order order =

std:: memory_order_seq_cst ) const noexcept ;
(constexpr desde C++26)

Reemplaza atómicamente el valor actual referenciado por * ptr con el resultado de la suma aritmética del valor y arg . Esta operación es una operación de lectura-modificación-escritura. La memoria se ve afectada según el valor de order .

  • Para tipos integrales con signo, la aritmética está definida para usar representación en complemento a dos. No hay resultados indefinidos.
  • Para tipos de punto flotante, el entorno de punto flotante en efecto puede ser diferente del entorno de punto flotante del hilo llamante. La operación no necesita conformarse con los rasgos correspondientes de std::numeric_limits pero se recomienda que lo haga. Si el resultado no es un valor representable para su tipo, el resultado no está especificado pero la operación por lo demás no tiene comportamiento indefinido.
  • Para tipos puntero, el resultado puede ser una dirección indefinida, pero la operación por lo demás no tiene comportamiento indefinido.

Esta sobrecarga participa en la resolución de sobrecarga solo si std:: is_const_v < T > es false .

Contenidos

Parámetros

arg - el otro argumento de la suma aritmética
order - restricciones de orden de memoria a aplicar

Valor de retorno

El valor referenciado por * ptr , inmediatamente antes de los efectos de esta función.

Ejemplo

Informes de defectos

Los siguientes informes de defectos que modifican el comportamiento se aplicaron retroactivamente a los estándares publicados anteriormente de C++.

DR Aplicado a Comportamiento publicado Comportamiento correcto
LWG 3508
( P3323R1 )
C++20 fetch_add no tenía sentido para const T restringido para aceptar solo T no constante