C++11特性之std::atomic::store

用法

void store (T val, memory_order sync = memory_order_seq_cst) volatile noexcept;
void store (T val, memory_order sync = memory_order_seq_cst) noexcept;

修改包含的值,替换所含值与VAL。
该操作是原子性的,并且遵循sync指定的内存顺序。

参数

返回值

异常

从不抛出异常

#include 
#include 
#include 

std::atomic<int> foo (0);

void set_foo(int x) {
  foo.store(x,std::memory_order_relaxed);
}

void print_foo() {
  int x;
  do {
    x = foo.load(std::memory_order_relaxed);
  } 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

你可能感兴趣的:(C++)