c# - 并行分配不同的数组元素有什么危险吗?
问题描述
我有一个简单的并行任务,它写入数组的单独元素,如下所示:
MyClass[] newObjects = new MyClass[ObjectsPerEdge*ObjectsPerEdge]; // ObjectsPerEdge = const int
Parallel.For(0, ObjectsPerEdge, new ParallelOptions { MaxDegreeOfParallelism = 2 }, z =>
{
for (int x = 0; x < ObjectsPerEdge; x++)
{
newObjects[x + z*ObjectsPerEdge] = new MyClass(...params...);
}
});
我基本上是在逐行填充一个 2D 网格,其中每个并行线程应该填充自己的一行。假设我的构造函数代码都是线程安全的,以这种方式使用数组有什么危险吗?即不同线程分配不同的数组元素是否安全,假设它们永远不会查看相同的元素?
解决方案
推荐阅读
- mips - 如何使用 MIPS 处理大于 10 的整数?
- javascript - 如果在单独的 javascript 文件中,元素不可迭代
- excel - 使用 VBA 查找合并单元格的最后一行
- atmel - Atmel SAM G55 CRCCU CRC32 计算不可复制
- javascript - 谷歌折线图连接两个数据表
- vb.net - WebBrowser - 从没有 ID、没有 TagName、没有 Class 的通用表中获取/读取数据
- javascript - Javascript Array.reduce() 使用错误代码 6 破坏页面
- jmeter - 使用 jsr223 断言验证响应
- c++ - C++ AVL 树 - 如何仅使用前序和后序来恢复节点输入顺序
- node.js - 我想将我的 gmail 帐户与 GMAIL API 同步,但可以选择一个月前或两个月前