我的问题涉及到的std ::原子和数据,这个指针指向。如果在线程1我有原子指针C++和在线程之间传递对象
Object A;
std:atomic<Object*> ptr;
int bar = 2;
A.foo = 4; //foo is an int;
ptr.store(*A);
,并且如果在螺纹2我观察到ptr指向A,可以我被保证ptr-> foo是4和杆是2?原子指针的缺省内存模型(顺序一致)是否确保在原子存储之前发生的非原子分配(在本例中为A.foo)在其他线程看到相同的atomic.store对于这两种情况?
如果有帮助或有事项,我使用的x64(我只关心这个平台),GCC(与支持原子能版本)。
我想你的意思'ptr.store(A)'? 'ptr.store(* A)'没有任何意义(除非'Object'定义了Object * Object :: operator *();'...)。 – cdhowie 2014-11-06 18:50:35
相关:[C++ 11引入了标准化的内存模型。这是什么意思?它是如何影响C++编程的?](http://stackoverflow.com/questions/6319146/c11-introduced-a-standardized-memory-model-what-does-it-mean-and-how-is- it-g) – Casey 2014-11-06 19:58:01