Atomique pointeurs en c++ et les objets de passage entre les threads

Ma question implique std::atomique et les données que ce pointeur pointe. Si dans le thread 1 j'ai

Object A;
std:atomic<Object*> ptr;
int bar = 2;
A.foo = 4;  //foo is an int;
ptr.store(*A);

et si dans le thread 2 j'observe que ptr points à Un, puis-je être assuré de la ptr->foo est de 4 bar 2? La mémoire par défaut pour le modèle atomique de pointeur (de manière Séquentielle cohérente) de garantir que les travaux sur la non atomique (dans ce cas, A. foo) qui se produisent avant atomique magasin sera vu par les autres threads avant qu'il voit la cession de la même atomique.magasin pour les deux cas?

Si ça aide ou des questions, je suis à l'aide x64 (et je ne se soucient cette plate-forme), gcc (avec une version qui prend en charge atomics).

Je pense que tu veux dire ptr.store(&A)? ptr.store(*A) n'a pas de sens (sauf si Object définit Object * Object::operator*();...).
Connexes: C++11 introduit un standardisés modèle de mémoire. Ça veut dire quoi? Et comment est-ce que ça va affecter la programmation en C++?

OriginalL'auteur Michael | 2014-11-06