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