Freigeben über


atomic-Struktur

Beschreibt ein Objekt, das auf einem gespeicherten Wert des Typs Ty atomische Vorgänge ausführt.

template <class Ty>
struct atomic;

Member

Öffentliche Konstruktoren

Name

Beschreibung

atomic::atomic-Konstruktor

Erstellt ein atomisches Objekt.

Öffentliche Operatoren

Name

Beschreibung

atomic::operator Ty Operator

Liest und den gespeicherten Wert und gibt ihn zurück. (atomic::load-Methode)

atomic::operator= Operator

Verwendet zum Ersetzen des gespeicherten Werts einen angegebenen Wert. (atomic::store-Methode)

atomic::operator++ Operator

Erhöht den gespeicherten Wert. Wird nur von integrale und Zeigerspezialisierungen verwendet.

atomic::operator+= Operator

Fügt dem gespeicherten Wert einen angegebenen Wert hinzu. Wird nur von integrale und Zeigerspezialisierungen verwendet.

atomic::operator-- Operator

Verringert den gespeicherten Wert. Wird nur von integrale und Zeigerspezialisierungen verwendet.

atomic::operator-= Operator

Subtrahiert einen angegebenen Wert vom gespeicherten Wert. Wird nur von integrale und Zeigerspezialisierungen verwendet.

atomic::operator&= Operator

Führt ein bitweises and auf einem angegebenen Wert und dem gespeicherten Wert aus. Wird nur bei Integralspezialisierungen verwendet.

atomic::operator|= Operator

Führt ein bitweises or auf einem angegebenen Wert und dem gespeicherten Wert aus. Wird nur bei Integralspezialisierungen verwendet.

atomic::operator^= Operator

Führt ein bitweises exclusive or auf einem angegebenen Wert und dem gespeicherten Wert aus. Wird nur bei Integralspezialisierungen verwendet.

Öffentliche Methoden

Name

Beschreibung

atomic::compare_exchange_strong-Methode

Führt einen atomic_compare_and_exchange-Vorgang auf this aus und gibt das Ergebnis zurück.

atomic::compare_exchange_weak-Methode

Führt einen weak_atomic_compare_and_exchange-Vorgang auf this aus und gibt das Ergebnis zurück.

atomic::fetch_add-Methode

Fügt dem gespeicherten Wert einen angegebenen Wert hinzu.

atomic::fetch_and-Methode

Führt ein bitweises and auf einem angegebenen Wert und dem gespeicherten Wert aus.

atomic::fetch_or-Methode

Führt ein bitweises or auf einem angegebenen Wert und dem gespeicherten Wert aus.

atomic::fetch_sub-Methode

Subtrahiert einen angegebenen Wert vom gespeicherten Wert.

atomic::fetch_xor-Methode

Führt ein bitweises exclusive or auf einem angegebenen Wert und dem gespeicherten Wert aus.

atomic::is_lock_free-Methode

Gibt an, ob die atomischen Vorgänge auf thissperrfrei sind. Ein atomischer Typ ist sperrfrei, wenn für keine der atomischen Vorgänge auf diesem Typ Sperren verwendet werden.

atomic::load-Methode

Liest und den gespeicherten Wert und gibt ihn zurück.

atomic::store-Methode

Verwendet zum Ersetzen des gespeicherten Werts einen angegebenen Wert.

Hinweise

Der Ty-Typ muss belanglos kopierbar sein. Das heißt, das Kopieren der Bytes mithilfe von memcpy muss ein gültiges Ty-Objekt erstellen, das im Vergleich dem ursprünglichen Objekt entspricht. Bei den Memberfunktionen compare_exchange_weak und compare_exchange_strong wird memcmp verwenden, um zu bestimmen, ob zwei Ty-Werte gleich sind. Bei diesen Funktionen wird kein Ty-definiertes operator== verwendet. Für die Memberfunktionen von atomic wird memcpy zum Kopieren der Werte des Typs Ty verwendet.

Eine teilweise Spezialisierung, atomic<Ty *>, ist für alle Zeigertypen vorhanden. Mit der Spezialisierung wird das Hinzufügen eines Offsets zum verwalteten Zeigerwert oder die Wegnahme eines Offsets von dort ermöglicht. Mit den arithmetischen Operationen wird ein Argument des Typs ptrdiff_t akzeptiert und entsprechend der Größe von Ty angepasst, damit es mit normaler Adressenarithmetik konsistent ist.

Eine Spezialisierung ist für jeden Integraltypen außer bool vorhanden. Mit jeder Spezialisierung wird ein umfangreicher Satz an Methoden für atomisch arithmetische und logische Vorgänge bereitgestellt.

atomic<char>

atomic<signed char>

atomic<unsigned char>

atomic<char16_t>

atomic<char32_t>

atomic<wchar_t>

atomic<short>

atomic<unsigned short>

atomic<int>

atomic<unsigned int>

atomic<long>

atomic<unsigned long>

atomic<long long>

atomic<unsigned long long>

Integralspezialisierungen werden von den entsprechenden **atomic_**integral-Typen abgeleitet. So wird atomic<unsigned int> z. B. von atomic_uint abgeleitet.

Anforderungen

Header: atomisch

Namespace: std

Siehe auch

Referenz

<atomic>

Weitere Ressourcen

Headerdateien der C++-Standardbibliothek