Namensräume
Varianten
Aktionen

std::atomic_ref<T>::fetch_sub

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_sub( difference_type arg,

                      std::memory_order order =

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

Atomar ersetzt den aktuellen Wert des referenzierten Objekts durch das Ergebnis der arithmetischen Subtraktion des Wertes und arg. Diese Operation ist eine Lese-Änderungs-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

[edit] Parameter

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

[edit] Rückgabewert

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

[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 fetch_sub war bedeutungslos für const T constrained to accept only non-const T