Namensräume
Varianten
Aktionen

std::atomic_ref<T>::operator+=,-=

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 operator+=( difference_type arg ) const noexcept;
(1) (constexpr seit C++26)
value_type operator-=( difference_type arg ) const noexcept;
(2) (constexpr seit C++26)

Ersetzt atomar den aktuellen Wert, auf den verwiesen wird, durch das Ergebnis einer Berechnung, die den vorherigen Wert und arg involviert. Diese Operationen sind Lese-Modifizierungs-Schreib-Operationen.

1) operator+= führt atomares Addieren durch. Entspricht return fetch_add(arg) + arg;.
2) operator-= führt atomares Subtrahieren durch. Entspricht return fetch_sub(arg) - arg;.
  • 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 Überladungen nehmen nur an der Overload-Auflösung teil, wenn std::is_const_v<T> false ist.

Inhalt

[edit] Parameter

arg - das Argument für die arithmetische Operation

[edit] Rückgabewert

Der resultierende Wert (d.h. das Ergebnis der Anwendung des entsprechenden binären Operators auf den Wert, auf den *ptr unmittelbar vor den Effekten der entsprechenden Memberfunktion verwiesen hat).

[edit] Hinweise

Im Gegensatz zu den meisten zusammengesetzten Zuweisungsoperatoren geben die zusammengesetzten Zuweisungsoperatoren für atomic_ref eine Kopie des gespeicherten Wertes zurück und nicht eine Referenz auf arg.

[edit] Beispiel

[edit] 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 Zusammengesetzte Zuweisungsoperatoren waren bedeutungslos für const T constrained to accept only non-const T

[edit] Siehe auch

addiert atomar das Argument zum Wert, der im referenzierten Objekt gespeichert ist, und gibt den zuvor gehaltenen Wert zurück
(öffentliche Memberfunktion) [bearbeiten]
subtrahiert atomar das Argument vom Wert, der im referenzierten Objekt gespeichert ist, und gibt den zuvor gehaltenen Wert zurück
(öffentliche Memberfunktion) [bearbeiten]
inkrementiert oder dekrementiert das referenzierte Objekt atomar um eins
(öffentliche Memberfunktion) [bearbeiten]
führt atomar bitweises AND, OR, XOR mit dem referenzierten Wert durch
(öffentliche Memberfunktion) [bearbeiten]