public member function
<atomic>

std::atomic::operator=

设置值 (1)
T operator= (T val) noexcept;T operator= (T val) volatile noexcept;
复制 [已删除] (2)
atomic& operator= (const atomic&) = delete;atomic& operator= (const atomic&) volatile = delete;
赋值包含的值
存储的值替换为 val

此操作是原子的,并且使用顺序一致性memory_order_seq_cst)。要使用不同的内存顺序来修改值,请参见 atomic::store

atomic 对象没有定义复制赋值,但请注意它们可以隐式转换为 T

参数

val
要复制到包含对象的值。
Tatomic 的模板参数(包含值的类型)。

返回值

val

示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// atomic::operator=/operator T example:
#include <iostream>       // std::cout
#include <atomic>         // std::atomic
#include <thread>         // std::thread, std::this_thread::yield

std::atomic<int> foo = 0;

void set_foo(int x) {
  foo = x;
}

void print_foo() {
  while (foo==0) {             // wait while foo=0
    std::this_thread::yield();
  }
  std::cout << "foo: " << foo << '\n';
}

int main ()
{
  std::thread first (print_foo);
  std::thread second (set_foo,10);
  first.join();
  second.join();
  return 0;
}

输出
foo: 10


数据竞争

无数据竞争(原子操作)。该操作使用*顺序一致性*(memory_order_seq_cst)。

异常安全

无异常保证: 绝不抛出异常。

另见