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 248

Gestern 1288

Woche 7951

Monat 9051

Insgesamt 3918213

Aktuell sind 48 Gäste und keine Mitglieder online

Kubik-Rubik Joomla! Extensions

Abonniere den Newsletter (+ pdf Päckchen)

Beiträge-Archiv

Sourcecode

Neuste Kommentare