Thursday, 22 February 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

casting - Why wasn't Tobey Maguire in The Amazing Spider-Man? - Movies & TV

In the Spider-Man franchise, Tobey Maguire is an outstanding performer as a Spider-Man and also reprised his role in the sequels Spider-Man...