Cer*_*ran 17 c++ enums atomic c++11
类atomic包含许多不同变量类型的原子版本.但是,它不包含原子枚举类型.有没有办法使用原子枚举或自己制作?据我所知,我唯一的选择是不使用枚举或使用互斥锁/信号量来保护它们.
注意:我发现这个错误报告提到"std :: atomic enum support",但我没有在C++标准中看到任何提及原子枚举类型,所以我不确定它是指什么.
Mik*_*our 22
通用atomic模板可用于所有简单的可复制类型,包括枚举.它是否无锁是由实施决定的; 希望它是,如果基础整数类型是.
Cer*_*ran 19
您可以像这样创建一个原子枚举:
#include <atomic>
enum Decision {stay,flee,dance};
std::atomic<Decision> emma_choice {stay}; // emma_choice is atomic
Run Code Online (Sandbox Code Playgroud)
你也可以用枚举类做同样的事情:
#include <atomic>
enum class Decision {stay,flee,dance};
std::atomic<Decision> emma_choice {Decision::stay}; // emma_choice is atomic
Run Code Online (Sandbox Code Playgroud)