Avatar ·

Qu'est-ce que le modèle mémoire en C++11 et comment affecte-t-il la programmation multithread ?

Bonjour à tous ! J'ai commencé à étudier le multithreading en C++, et je suis tombé sur le terme "modèle mémoire" (memory model), qui est apparu dans la norme C++11. Honnêtement, je ne comprends pas complètement ce que cela signifie et à quoi cela sert. Avant, j'écrivais des programmes simples monothread, et il me semblait que tout était clair avec la mémoire : les variables se trouvent dans la RAM, le processeur les lit et les écrit. Mais quand j'ai essayé d'écrire un exemple simple avec deux threads, j'ai commencé à avoir des problèmes étranges. Voici le code : ```cpp #include #include bool flag = false; int value = 0; void writer() { value = 42; flag = true; } void reader() { while (!flag) {} std::cout << "Value: " << value << std::endl; } int main() { std::thread t1(writer); std::thread t2(reader); t1.join(); t2.join(); return 0; } ``` Je m'attendais à ce que reader imprime toujours "Value: 42", mais parfois le programme affiche "Value: 0" ou se bloque complètement. J'ai entendu dire que