两个线程可以写入同一个数组的不同元素吗?

Tom*_*ult 5 c arrays multithreading

我想知道两个线程是否可以修改同一个数组的元素.

如果我有unsigned char array[4],可以thread1设置array[0]array[1]'A'和thread2设置array[2]array[3]'B'同时没有问题?

The*_*ist 7

根据定义,当 1 个或多个线程将数据写入内存中的同一位置而其他线程从中读取(或也写入)时,就会发生竞争条件。每个修改不同数组元素的多个线程是否会写入内存中的相同位置?答案是不。每个数组元素都有一个单独为它保留的内存区域,该区域属于整个数组。因此,不同元素的修改不会写入任何相同的存储位置。

实际上,我很久以前在这里问过这个问题,并且我的博士工作的一部分就是以此为基础的。我并行拟合了数百条曲线(最小二乘拟合),同时更新了具有多个线程结果的单个数组。