Acquire- und Release-Speicherbarrieren

Acquire und release Speicherbarrieren (fences) garantieren ähnliche Synchronisations- und Ordnungsbedingungen wie atomare Operationen mit Acquire-Release-Semantik. Ähnliche, denn die Unterschiede stecken im Detail.

Weiterlesen...
Kommentar schreibenGelesen: 6372

Zäune als Speicherbarrieren

Die zentrale Idee von std::atomic_thread_fence ist es, Synchronisations- und Ordnungsbedingungen zwischen Threads ohne Operationen auf atomaren Variablen zu etablieren.

Weiterlesen...
Kommentar schreibenGelesen: 5931

memory_order_consume

std::memory_order_consume ist das legendärste der sechs Speichermodelle. Dieser besondere Ruf ist zwei Tatsachen geschuldet. Zum einen ist die std::memory_order_consume Ordnung sehr verständnisresistent. Zum andern hat es meines Wissens noch kein Compiler umgesetzt.

Weiterlesen...
Kommentar schreibenGelesen: 6160

Transitivität der Acquire-Release-Semantik

Eine release-Operation synchronisiert sich mit einer acquire-Operation auf der gleichen atomaren Variable und erzeugt dazu noch eine Ordnungsbedingung. Damit lassen sich Threads auf performante Weise synchronisieren, wenn sie auf einer gemeinsamen atomaren Variablen agieren. Doch wie lassen sich zwei Threads mit der Acquire-Release-Semantik synchronisieren, wenn sie auf keiner gemeinsamen atomaren Variablen agieren? Eine globale Ordnung der Threads mit Hilfe der Sequenziellen Konsistenz ist oft zu schwergewichtig.

Weiterlesen...
Kommentar schreibenGelesen: 5087

Relaxed-Semantik

Mit der Relaxed-Semantik sind wir am Ende der Skala angelangt. Die Relaxed-Semantik ist das schwächste C++-Speichermodell und sichert nur zu, dass die Operationen auf atomaren Variablen atomar sind.

Weiterlesen...
Kommentar schreibenGelesen: 4737

Acquire-Release-Semantik

Mit der Acquire-Release-Semantik wird das C++-Speichermodell richtig spannend. Denn nun gilt es nicht mehr, die Synchronisation von Threads zu betrachten, sondern die Synchronisation auf der gleichen atomaren Variable in verschiedenen Threads.

Weiterlesen...
Kommentar schreibenGelesen: 5424

Sequenzielle Konsistenz angewandt

In dem Artikel sequenzielle Konsistenz habe ich bereits das Defaul-Speichermodell vorgestellt. Dieses Modell, in dem die Aktionen aller Threads einer globalen Reihenfolge oder auch eines globalen Zeittaks folgen, besitzt einen großen Vorteil und einen großen Nachteil.

Weiterlesen...
Kommentar schreibenGelesen: 9921

Synchronisations- und Ordnungsbedingungen

Mit diesem Artikel geht unsere Tour in das C++-Speichermodell ein Stückchen tiefer. Haben sich die bisherigen Artikel mit der Atomizität der atomaren Variablen beschäftigt, so geht es nun um die Synchronisations- und Ordnungsbedingungen von Operationen.

Weiterlesen...
Kommentar schreibenGelesen: 8255

Atomare Datentypen

Neben Wahrheitswerten lassen sich atomare Datetypen zu Zeigern, integralen Typen und eigenen Datentypen erzeugen. Für eigene Datentypen gelten besondere Regeln.

Weiterlesen...
Kommentar schreibenGelesen: 10859

Abonniere den Newsletter (+ pdf Päckchen)

Beiträge-Archiv

Sourcecode