我有两个关于原子的问题:
1)以下代码是否保证在多线程设置中返回连续的,单调递增的序列而不重复?
#include <atomic>
struct AtomicCounter {
std::atomic<int> value;
AtomicCounter() : value( 0 ) {}
int getNextSequence(){
return ++value;
}
};
Run Code Online (Sandbox Code Playgroud)
2)有一种更简单的初始化方法吗?这些都不起作用:
std::atomic<int> value ( 0 ) ;
std::atomic<int> value { 0 } ;
std::atomic<int> value=0;
Run Code Online (Sandbox Code Playgroud)
提前致谢
atomic<int> value {0};是正确的语法(演示).但是,并非所有C++编译器都支持C++ 11的非静态数据成员初始值设定项,因此使用C++ 98的初始化列表可能是目前唯一可用的方法.以下是各种编译器实现的C++ 11功能列表的链接.