std::atomic<T>
suggest changestd::atomic<T>
template allows thread safe writing, reading and incrementing numeric values.
Reading and writing memory from different threads leads to data races and unpredictable results.
std::atomic
adds necessary barriers to make the operations thread safe.
Example of using std::atomic_int:
#include <iostream> // std::cout
#include <atomic> // std::atomic, std::memory_order_relaxed
#include <thread> // std::thread
std::atomic_int foo (0);
void set_foo(int x) {
foo.store(x); // set value atomically
}
void print_foo() {
int x;
do {
x = foo.load(); // get value atomically
} while (x==0);
std::cout << "foo: " << x << '\n';
}
int main ()
{
std::thread first (print_foo);
std::thread second (set_foo,10);
first.join();
second.join();
return 0;
}
foo: 10
Found a mistake? Have a question or improvement idea?
Let me know.
Table Of Contents