Sukzessive Optimierung - Relaxed-Semantik

Mit der Relaxed-Semantik gelten keine Synchronisations- und Ordnungsbedingungen auf den atomaren Operationen.

 

Relaxed-Semantik

Bei der Relaxed-Semantik reduzieren sich die atomaren Operationen auf ihre Atomizität.

 

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <atomic>
#include <iostream>
#include <thread>

std::atomic<int> x{0};
std::atomic<int> y{0};

void writing(){  
  x.store(2000,std::memory_order_relaxed);  
  y.store(11,std::memory_order_relaxed);
}

void reading(){  
  std::cout << y.load(std::memory_order_relaxed) << " ";  
  std::cout << x.load(std::memory_order_relaxed) << std::endl;
}

int main(){
  std::thread thread1(writing);
  std::thread thread2(reading);
  thread1.join();
  thread2.join();
};

 

Mit der Relaxed-Semantik ist es einfach, die entscheidenden Fragen des kleinen Programms zu beantworten. Ist das Programm wohldefiniert? Welche Werte für x und y sind möglich? Zum einen sind alle Operationen auf den Variablen x und y atomar. Somit ist das Programm wohldefiniert. Zum anderen gelten keine Einschränkungen auf den Ausführungen der beiden Threads. Es kann vorkommen, dass der thread2 die Operationen des thread1 in anderer Reihenfolge sieht. Zum ersten Mal in unserer sukzessiven Optimierung ist es zulässig, dass der Wert x == 0 und der Wert von y == 11 von dem thread2 ausgegeben wird. Somit sind alle Kombinationen der Werte von x und y möglich.

sukzessiveOptimierungRelaxedSemantik

Wie geht's weiter?

Im nächsten Artikel will ich mit der Mär aufräumen, dass volatile in C++ Multithreading-Semantik besitzt.

 

 

 

 

 

 

 

title page smalltitle page small Go to Leanpub/cpplibrary "What every professional C++ programmer should know about the C++ standard library".   Hole dir dein E-Book. Unterstütze meinen Blog.

 

 

Mentoring

Stay Informed about my Mentoring

 

Rezensionen

Tutorial

Besucher

Heute 941

Gestern 1091

Woche 3339

Monat 941

Insgesamt 3337624

Aktuell sind 42 Gäste und keine Mitglieder online

Kubik-Rubik Joomla! Extensions

Abonniere den Newsletter (+ pdf Päckchen)

Beiträge-Archiv

Sourcecode

Neuste Kommentare