Multithreading std::atomic上的非原子操作

Multithreading std::atomic上的非原子操作,multithreading,c++11,atomic,Multithreading,C++11,Atomic,我有一个庞大的指针数组,我需要原子化地使用它们。C++11为这些目的提供了std::atomic类和相关函数,总体上对我来说非常好。但在初始化和清理阶段,我不需要它是原子的,因为已知只有一个线程将操作数据。如果原子指针可以像C++11之前那样实现为普通的易失性变量,这将很容易,但现在我的问题是:std::atomic强制我只使用原子操作。 有没有一种非原子使用std::atomic的方法?您试图解决的问题是什么?也就是说,在初始化和/或清理过程中发生了什么不好的事情,如果您不使用std::ato

我有一个庞大的指针数组,我需要原子化地使用它们。C++11为这些目的提供了std::atomic类和相关函数,总体上对我来说非常好。但在初始化和清理阶段,我不需要它是原子的,因为已知只有一个线程将操作数据。如果原子指针可以像C++11之前那样实现为普通的易失性变量,这将很容易,但现在我的问题是:std::atomic强制我只使用原子操作。
有没有一种非原子使用std::atomic的方法?

您试图解决的问题是什么?也就是说,在初始化和/或清理过程中发生了什么不好的事情,如果您不使用std::atomic,您认为不会发生这些事情?std::atomic和volatile是不同的事情,设计用于不同的目的。Volatile并不意味着原子访问。请解释您试图实现的目标。我试图提高代码的性能,并用廉价的非原子操作替换昂贵的原子操作。我的意思是,当原子操作由特定函数(如运行时间较长的windows InterlocatedCompareeExchange)执行时,变量必须具有易失性volatile*。您说您正在尝试提高代码的性能,但您唯一建议更改的代码是“初始化和清理阶段”。您衡量过这些阶段的性能吗?这真的是个问题吗?