Namensräume
Varianten
Aktionen

std::atomic_ref<T>::fetch_add

Von cppreference.com
< cpp‎ | atomic‎ | atomic ref
 
 
Bibliothek für nebenläufige Programmierung
Threads
(C++11)
(C++20)
this_thread Namespace
(C++11)
(C++11)
(C++11)
Kooperatives Beenden
Gegenseitiger Ausschluss
(C++11)
Allgemeines Sperrungsmanagement
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
Bedingungsvariablen
(C++11)
Semaphoren
Latches und Barriers
(C++20)
(C++20)
Futures
(C++11)
(C++11)
(C++11)
(C++11)
Sichere Wiederherstellung
(C++26)
Hazard Pointer
Atomare Typen
(C++11)
(C++20)
Initialisierung von atomaren Typen
(C++11)(veraltet in C++20)
(C++11)(veraltet in C++20)
Speicherordnung
(C++11)(deprecated in C++26)
Freie Funktionen für atomare Operationen
Freie Funktionen für atomare Flags
 
 
Nur bereitgestellt, wenn T ein arithmetischer Typ außer cv bool oder ein Zeigertyp auf ein Objekt ist
value_type fetch_add( difference_type arg,

                      std::memory_order order =

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

Ersetzt atomar den aktuellen Wert, auf den *ptr verweist, durch das Ergebnis der arithmetischen Addition des Wertes und arg. Diese Operation ist eine Lese-Modifizierungs-Schreib-Operation. Der Speicher wird gemäß dem Wert von order beeinflusst.

  • Für vorzeichenbehaftete ganzzahlige Typen wird die Arithmetik in zweierkomplementärer Darstellung definiert. Es gibt keine undefinierten Ergebnisse.
  • Für Gleitkommatypen kann die aktive Gleitkomma-Umgebung von der Gleitkomma-Umgebung des aufrufenden Threads abweichen. Die Operation muss nicht den entsprechenden std::numeric_limits-Merkmalen entsprechen, ist aber ermutigt, dies zu tun. Wenn das Ergebnis kein darstellbarer Wert für seinen Typ ist, ist das Ergebnis nicht spezifiziert, aber die Operation hat ansonsten kein undefiniertes Verhalten.
  • Für Zeigertypen kann das Ergebnis eine undefinierte Adresse sein, aber die Operation hat ansonsten kein undefiniertes Verhalten.

Diese Überladung nimmt nur an der Überladungsauflösung teil, wenn std::is_const_v<T> false ist.

Inhalt

[bearbeiten] Parameter

arg - das andere Argument der arithmetischen Addition
Reihenfolge - Speicherreihenfolgebeschränkungen, die durchgesetzt werden sollen

[bearbeiten] Rückgabewert

Der Wert, auf den *ptr verweist, unmittelbar vor den Effekten dieser Funktion.

[bearbeiten] Beispiel

[bearbeiten] Fehlerberichte

Die folgenden Verhaltensändernden Fehlerberichte wurden rückwirkend auf zuvor veröffentlichte C++-Standards angewendet.

DR angewendet auf Verhalten wie veröffentlicht Korrigiertes Verhalten
LWG 3508
(P3323R1)
C++20 fetch_add war für const T bedeutungslos constrained to accept only non-const T