Рассмотрим эти два варианта:
std::atomic<int> a;
a = 1;
int b = a;
и
std::atomic<int> a;
a.store(1);
int b = a.load();
Я вижу из документации, что вторая полностью атомарна, но я не понимаю, когда я должен использовать, что и какая разница в деталях.