我正在处理+100000行并执行并行。这为更快的处理。并行不会执行所有记录
逻辑行为应该是:100000记录具有85000个groupId,意思是MyItems应该保存85000个记录。
这是不是这样的......我结束了不同的金额,然后85000
的过程如下:
从DB
获取所有值获得所有的ID(不行ID的,而是一个的groupId)整数的数组内
过程中的groupId的
var myItems = new List<MyItem>(IDCounter.Length);
Parallel.For(0, IDCounter.Length, (i, loopState) =>
{
if(!SomeParameter)
loopState.Stop();
var records = (from m in AllValues where m.GroupId == IDCounter[i] select m).ToList();
var recordList = new List<MyRecords>();
for(var j = 0; j<records.Count; j++)
{
recordList.Add(new MyRecord{Text = records[j].OtherValue});
}
myItems.Add(new MyItem(Text = records[0].SomeValue, List = recordList));
});
有什么想法?
“myItems”的类型是什么?如果它是'List',那么你可以从多个threasd访问它,尽管它不是线程安全的。此外,这看起来像伪代码:'new MyItem(Text = records [0] .SomeValue,List = l)'。如果您发布*真实*代码,这将更容易帮助您 - 理想情况下是一个简短但完整的示例,展示问题。 –
2014-10-02 12:11:38
由于您始终处理项目的完整列表,因此我无法看到这比顺序算法更有效。 – Stilgar 2014-10-02 12:11:52
@JonSkeet;我以为我提供了一个简短但可用的真实代码,它与我所拥有的 – Schuere 2014-10-02 12:13:31