根据一个Channel 9 E2E视频(其中包含Herb Sutter),如果number atomic<int>
number++
是原子的,则在c ++ 0x中.有人可以确认它是如何在最终的C++ 11标准中(让我们假装它已经完成:)).
spr*_*aff 14
该标准被最终确定,并在所有的标准组成专业化的每个操作atomic<T>
是原子.
这并不意味着涉及标准积分的所有表达式atomic<T>
都是原子的.
number = number * 2;
Run Code Online (Sandbox Code Playgroud)
是两个操作:
temporary = number * 2;
number = temporary;
Run Code Online (Sandbox Code Playgroud)
他们每个人都是原子的,但他们在一起却不是.这是交易/关键部分的用途.
是.atomic<int> operator++
使用atomic<int>::fetch_add
哪种是原子操作.
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2011/n3242.pdf p.1127