Multithreading - C++11 a introduit un modèle mémoire standardisé. Qu'est-ce que ça veut dire ? Et comment cela va affecter la programmation C+

Mots clés : c++multithreadingc++11language-lawyermemory-modelc++

meilleur 1 Réponses Multithreading - C++11 a introduit un modèle mémoire standardisé. Qu'est-ce que ça veut dire ? Et comment cela va affecter la programmation C+

vote vote

97

           Global            int x, y;  Thread 1            Thread 2 x = 17;             cout << y << " "; y = 37;             cout << x << endl; 
           Global            atomic<int> x, y;  Thread 1                 Thread 2 x.store(17);             cout << y.load() << " "; y.store(37);             cout << x.load() << endl; 
           Global            atomic<int> x, y;  Thread 1                            Thread 2 x.store(17,memory_order_relaxed);   cout << y.load(memory_order_relaxed) << " "; y.store(37,memory_order_relaxed);   cout << x.load(memory_order_relaxed) << endl; 
           Global            atomic<int> x, y;  Thread 1                            Thread 2 x.store(17,memory_order_release);   cout << y.load(memory_order_acquire) << " "; y.store(37,memory_order_release);   cout << x.load(memory_order_acquire) << endl; 

Questions similaires