Namensräume
Varianten
Aktionen

std::atomic_fetch_xor, std::atomic_fetch_xor_explicit

Von cppreference.com
< cpp‎ | atomic
 
 
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
atomic_fetch_xoratomic_fetch_xor_explicit
(C++11)(C++11)
Freie Funktionen für atomare Flags
 
Definiert in Header <atomic>
template< class T >

T atomic_fetch_xor( std::atomic<T>* obj,

                    typename std::atomic<T>::value_type arg ) noexcept;
(1) (seit C++11)
template< class T >

T atomic_fetch_xor( volatile std::atomic<T>* obj,

                    typename std::atomic<T>::value_type arg ) noexcept;
(2) (seit C++11)
template< class T >

T atomic_fetch_xor_explicit( std::atomic<T>* obj,
                             typename std::atomic<T>::value_type arg,

                             std::memory_order order) noexcept;
(3) (seit C++11)
template< class T >

T atomic_fetch_xor_explicit( volatile std::atomic<T>* obj,
                             typename std::atomic<T>::value_type arg,

                             std::memory_order order) noexcept;
(4) (seit C++11)

Ersetzt atomar den Wert, auf den obj zeigt, durch das Ergebnis einer bitweisen XOR-Operation zwischen dem alten Wert von obj und arg. Gibt den Wert zurück, den obj zuvor enthielt.

Die Operation wird so ausgeführt, als ob Folgendes ausgeführt würde:

1,2) obj->fetch_xor(arg)
3,4) obj->fetch_xor(arg, order)

Wenn std::atomic<T> keine fetch_xor-Mitgliedfunktion hat (diese Mitgliedfunktion ist nur für ganzzahlige Typen außer bool bereitgestellt), ist das Programm schlecht geformt.

Inhalt

[edit] Parameter

obj - Zeiger auf das zu modifizierende atomare Objekt
arg - der Wert, der mit dem im atomaren Objekt gespeicherten Wert per bitweiser XOR-Operation verknüpft wird
Reihenfolge - die Speicher-Synchronisationsreihenfolge

[edit] Rückgabewert

Der Wert, der den Effekten dieser Funktion in der Modifikationsreihenfolge von *obj unmittelbar vorausging.

[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
P0558R1 C++11 exakter Typabgleich war erforderlich, weil
T aus mehreren Argumenten abgeleitet wurde
T wird nur abgeleitet
von obj

[edit] Siehe auch

führt atomar eine bitweise XOR-Operation zwischen dem Argument und dem Wert des atomaren Objekts aus und erhält den zuvor gehaltenen Wert
(öffentliche Mitgliedfunktion von std::atomic<T>) [edit]
ersetzt das atomare Objekt durch das Ergebnis einer bitweisen OR-Operation mit einem nicht-atomaren Argument und gibt den vorherigen Wert des atomaren Objekts zurück
(Funktions-Template) [bearbeiten]
ersetzt das atomare Objekt durch das Ergebnis einer bitweisen AND-Operation mit einem nicht-atomaren Argument und gibt den vorherigen Wert des atomaren Objekts zurück
(Funktions-Template) [bearbeiten]
C-Dokumentation für atomic_fetch_xor, atomic_fetch_xor_explicit