是KeyValuePair的迭代顺序&lt;&gt; Dictionary <int,t> </int,t>中的元素

时间:2011-03-30 05:33:11

标签: c# dictionary iteration

我有一个包含几十万个元素的词典。我需要对字典中的每一对执行一个冗长的计算,所以为了这个目的,我想生成一些工作线程并为每个线程分配字典中的一系列元素来处理。

我理解哈希表的“订单未定义”,这很好 - 我所关心的是:

如果我从不同的线程执行此操作:

int count = 0;
foreach (KeyValuePair<int, IDataPoint> pair in pointDictionary)
{
    if (count >= min && count <= max) // min,max different for each thread
    {
        // do stuff
    }
    ++count;
}

在不同的线程上,pointDictionary中的元素会以相同的顺序访问吗?

如果没有,我将把字典拆分为N个字典,并将每个迷你字典中的一个传递给N个工作线程。

1 个答案:

答案 0 :(得分:2)

是的,只要字典尚未修改。

Is the order of objects returned by FOREACH stable?