Thursday, February 22, 2018

multithreading - Atomic pointers in c++ and passing objects between threads

Answer


My question involves std::atomic and the data that this pointer points to. If in thread 1 I have




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


and if in thread 2 I observe that ptr points to A, can I be guaranteed that ptr->foo is 4 and bar is 2? Does the default memory model for the atomic pointer (Sequentially consistent) guarantee that assignments on non atomic (in this case A.foo) that happen before an atomic store will be seen by other threads before it sees the assignment of the same atomic.store for both cases?




If it helps or matters, I am using x64 (and I only care about this platform), gcc (with a version that supports atomics).

No comments:

Post a Comment

plot explanation - Why did Peaches' mom hang on the tree? - Movies & TV

In the middle of the movie Ice Age: Continental Drift Peaches' mom asked Peaches to go to sleep. Then, she hung on the tree. This parti...