Avatar ·

Was ist das C++11-Speichermodell und wie beeinflusst es die Multithread-Programmierung?

Hallo zusammen. Ich lerne C++ und bin beim Multithreading angelangt. Ich habe gelesen, dass in C++11 ein "Speichermodell" eingeführt wurde, das alles verändert hat. Aber ich verstehe nicht, was das eigentlich bedeutet und wozu es gut ist.\n\nFrüher habe ich so etwas geschrieben:\n\n```cpp\n#include \n#include \n#include \n\nint shared_data = 0;\nbool ready = false;\n\nvoid writer() {\n shared_data = 42; // Schritt 1\n ready = true; // Schritt 2\n}\n\nvoid reader() {\n while (!ready); // Warten, bis ready true wird\n std::cout << shared_data << std::endl; // Wird hier immer 42 stehen?\n}\n```\n\nIch habe das auf meinem Computer ausgeführt, und es funktionierte. Aber mir wurde gesagt, dass dieser Code ohne das Speichermodell und atomare Operationen mit korrekten Barriers auf einem anderen Prozessor oder bei Compiler-Optimierungen kaputtgehen kann.