1
我需要创建一个原子整数的数组,即n个整数,每个整数都是原子的。我发现std::vector<std::atomic<int>>
将无法正常工作,但后来我尝试了以下方法,并使用clang成功编译。在C++中使用双指针声明动态数组原子是正确的吗?
int n;
std::cin >> n;
std::atomic<int> **a;
a = new std::atomic<int>* [n];
for(int i = 0; i < n; i++)
{
a[i] = new std::atomic<int>();
}
我不知道,如果这样做,这是正确的,是吗?此外,是否有任何方法来验证是否所有a[i][0]
将在这里是原子(除了检查与多个线程)?
'我发现std :: vector>不会工作。你尝试了什么? 'std :: vector > a(n);'非常有效。 –
你是什么意思“检查是否所有'a [i] [0]'都是原子的”?他们的类型是'std :: atomic',你还需要知道什么? –
我试图在'std :: vector>'上调用'resize()',这就是导致问题的原因。但是,是的,它完美的工作,谢谢。 –