Quantcast
Channel: How can an atomic operation be not a synchronization operation? - Stack Overflow
Browsing index pages (4 articles)
↧

How can an atomic operation be not a synchronization operation?

The standard says that a relaxed atomic operation is not a synchronization operation. But what's atomic about an operation result of which is not seen by other threads.The example here wouldn't give...

View Article


Answer by SergeyA for How can an atomic operation be not a synchronization...

Yes, standard is correct. Relaxed atomics are not synchronization operation, as only atomicity of operation is guaranteed.For example, int k = 5;void foo() { k = 10;}int baz() { return k;}In presence...

View Article


Answer by Brian Bi for How can an atomic operation be not a synchronization...

Suppose we havestd::atomic<int> x = 0;// thread 1foo();x.store(1, std::memory_order_relaxed);// thread 2assert(x.load(std::memory_order_relaxed) == 1);bar();There is, first of all, no guarantee...

View Article

Answer by rustyx for How can an atomic operation be not a synchronization...

The compiler and the CPU are allowed to reorder memory accesses. It's the as-if rule and it assumes a single-threaded process.In multithreaded programs, the memory order parameter specifies how memory...

View Article
Browsing index pages (4 articles)


Latest Images