将原子 int 向量转换或转换为 int 向量的有效方法

efficent way of casting or converting vector of atomic int to vector of int

我确实有一个整数向量,我想确保增量操作是线程安全的,所以我在所有并行增量之后使用了 std::vector<std::atomic<int>> 我需要非原子向量 std::vector<int>。有没有一种有效的方法可以做到这一点,而无需复制?向量很大,性能很重要

在 C++ 中,原子操作是对象本身的 属性,而不是您访问它的方式。就对象模型而言,atomic<int>int 没有实际关系,除了可以将一个转换为另一个这一事实。您不能将 atomic<int> 转换为 int;您只能创建具有相同值的新对象。

我差点忘了,对于增量操作,另一种选择是使用 __sync_fetch_and_add() 而不是使用原子变量时遇到麻烦。 这不是问题的转换或转换部分的实际答案,但对于那些正在为 const 增量操作寻找线程安全替代方案的人来说,这可能很有用。