我有两个关于原子的问题:
1)以下代码是否保证在多线程设置中返回连续的,单调递增的序列而没有重复?
#include <atomic>
struct AtomicCounter {
std::atomic<int> value;
AtomicCounter() : value( 0 ) {}
int getNextSequence(){
return ++value;
}
};
2)是否有更简单的初始化方法?这些都不起作用:
std::atomic<int> value ( 0 ) ;
std::atomic<int> value { 0 } ;
std::atomic<int> value=0;
提前致谢
答案 0 :(得分:9)
atomic<int> value {0};
是正确的语法(demo)。但是,并非所有C ++编译器都支持C ++ 11的非静态数据成员初始值设定项,因此使用C ++ 98的初始化列表可能是目前唯一可用的方法。这是由各种编译器实现的link to C++11 feature lists。
答案 1 :(得分:0)
是的。
您无法在类体内进行初始化,您需要使用当前正在使用的初始化列表语法。