是原子用于std :: atomic <int> </int>

时间:2011-07-27 13:55:13

标签: c++11 atomic

如果数字为atomic<int>,则在c ++ 0x中根据一个Channel 9 E2E视频(包含Herb Sutter) number++是原子的。有人可以确认它是如何在最终的C ++ 11标准中(假设它已经完成了:))。

2 个答案:

答案 0 :(得分:14)

标准 已完成,atomic<T>的所有标准整数特化的每个操作都是原子的。

这并不意味着涉及标准整数atomic<T>的所有表达式都是原子的。

number = number * 2;

是两个操作:

temporary = number * 2;
number = temporary;

它们中的每一个都是原子的,但它们并非如此。这就是交易/关键部分的用途。

答案 1 :(得分:7)

是。 atomic<int> operator++使用atomic<int>::fetch_add这是一个原子操作。

http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2011/n3242.pdf p。 1127