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
Fourni uniquement lorsque T est un type arithmétique autre que cv bool ou un type pointeur-vers-objet
value_type fetch_add ( difference_type arg,

std:: memory_order order =

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

Remplace atomiquement la valeur actuelle référencée par * ptr par le résultat de l'addition arithmétique de la valeur et arg . Cette opération est une opération de lecture-modification-écriture. La mémoire est affectée selon la valeur de order .

  • Pour les types entiers signés, l'arithmétique est définie pour utiliser la représentation en complément à deux. Il n'y a aucun résultat indéfini.
  • Pour les types à virgule flottante, l' environnement de virgule flottante en vigueur peut être différent de celui du thread appelant. L'opération n'a pas besoin de se conformer aux traits correspondants de std::numeric_limits mais est encouragée à le faire. Si le résultat n'est pas une valeur représentable pour son type, le résultat est non spécifié mais l'opération n'a par ailleurs aucun comportement indéfini.
  • Pour les types pointeurs, le résultat peut être une adresse indéfinie, mais l'opération n'a par ailleurs aucun comportement indéfini.

Cette surcharge participe à la résolution de surcharge seulement si std:: is_const_v < T > est false .

Table des matières

Paramètres

arg - l'autre argument de l'addition arithmétique
order - les contraintes d'ordre mémoire à appliquer

Valeur de retour

La valeur référencée par * ptr , immédiatement avant les effets de cette fonction.

Exemple

Rapports de défauts

Les rapports de défauts modifiant le comportement suivants ont été appliqués rétroactivement aux normes C++ précédemment publiées.

DR Appliqué à Comportement publié Comportement corrigé
LWG 3508
( P3323R1 )
C++20 fetch_add n'avait aucun sens pour const T contraint pour n'accepter que les T non constants