我來自Threading with Parallel.For Adding Lists。對於鏈接中的例子,兩個線程用於調用Parallel.Invoke
,這仍然很慢,所以我想在循環內部執行一些多線程,假設我不在意訂單項被添加。 但parallel.for
沒有作爲expecetd工作,並給出indexofRange異常。 有人PLZ的幫助?如何使用parallel.for將項目添加到列表
private static void Main(string[] args)
{
var dict1 = new Dictionary<int, string>();
var dict2 = new Dictionary<int, string>();
Stopwatch s = Stopwatch.StartNew();
Parallel.Invoke(() => FillDictionary(dict1, 10000000),() => FillDictionary(dict2, 10000000));
//FillDictionary(dict1, 10000000);
//FillDictionary(dict2, 10000000);
Console.WriteLine("test");
Console.WriteLine(s.Elapsed.TotalMilliseconds);
Console.ReadLine();
}
private static void FillDictionary(Dictionary<int, string> toFill, int itemCount)
{
//for (int i = 0; i < itemCount; i++)
//toFill.Add(i, "test" + i);
Parallel.For(0, itemCount, (i) => toFill.Add(i, "test" + i));
}
其實我以爲也許使用parallel.for不是線程安全的。 – baozi 2014-09-21 18:20:13