gpt4 book ai didi

.net - Parallel.For List

转载 作者:行者123 更新时间:2023-12-01 07:09:50 25 4
gpt4 key购买 nike

我写了下面几行代码:

    private static List<Int32> GetRandomList_Serial()
{
List<Int32> returnValue = new List<int>();
Random random = new Random();

for (int i = 0; i < 10000000; i++)
{
returnValue.Add(random.Next());
}
returnValue.Sort();
return returnValue;
}

然后我写了这段代码:

    private static List<Int32> GetRandomList_Parallel()
{
List<Int32> returnValue = new List<int>();
Random random = new Random();

Parallel.For(0, 10000000, y =>
{
returnValue.Add(random.Next());
});

returnValue.Sort();
return returnValue;

}

串行工作正常,并行抛出这个异常:

System.ArgumentException was unhandled by user code

Destination array was not long enough. Check destIndex and length, and the array's lower bounds.

有人知道为什么吗?

最佳答案

您使用的是非线程安全的 List<>。使用并发包<>。我在切换到并行循环时一直遇到这个问题。它会间歇性地发生,而不是每次都发生,因此很难检测到。

关于.net - Parallel.For List<Int32>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9607259/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com