【发布时间】:2017-01-16 10:19:10
【问题描述】:
我正在使用 Parallel.foreach 进行超过 500 次迭代。
我的循环是这样的:
Parallel.ForEach(indexes, (index) =>
{
//parentCreation with index object
parent=create(index);
//call of function to create children
createChildrenOfType1(parent);
createChildrenOfType2(parent);
});
我面临不一致的输出。父母的创建是正确的,但孩子的创建是不一致的。 有时不创建子项,有时只创建少数子项,依此类推。 子创建方法再次具有 for 循环来创建 100 个子。
如何在使用并行 foreach 进行父创建时使我的子创建保持一致。
【问题讨论】:
-
我认为您将不得不展示您对这些创建方法的实现。
-
线程不安全的对象是线程不安全的
-
如果您曾经玩过 GTA 并且玩飞镖喝得太多 - 这就是在多线程环境中使用不安全对象时的世界感觉。这不正常。
标签: c# multithreading foreach parallel-processing task-parallel-library