use*_*789 9 c++ arrays multithreading c++11
我试图使用C++ 11原子的基本对象数组,即下面:
// Atomic array
std::atomic<Object*> *array = new std::atomic<Object*>[10];
// Storing old data
array[0].store(oldObject);
// Store the new data
Object *newObject = new Object();
while(!array[0].compare_exchange_strong(oldObject,newObject));
Run Code Online (Sandbox Code Playgroud)
我的问题是,只有当另一个线程在相同的索引处修改数组时,CAS操作才能失败吗?或者,如果任何线程试图修改阵列中的任何位置,CAS操作是否会失败?后者是我在测试中似乎得到的行为.如果是这样,是否有更好的方法来声明一个数组,以便修改数组中不同的单个单元格不会相互影响?
谢谢.