gpt4 book ai didi

c# - 并行处理期间的值存储

转载 作者:行者123 更新时间:2023-11-30 13:59:12 26 4
gpt4 key购买 nike

我刚刚试用了这个简单的程序...没什么特别的..

double[] a = new double[100000];
double[] b = new double[100000];

List<double> a1 = new List<double>();
List<double> b1 = new List<double>();

for (Int64 i = 0; i < 100000; i++)
{
a[i] = i;
a1.Add(i);
}

Parallel.For(0, 100000, delegate(Int64 i)
{
b[i] = i;
b1.Add(i);
});

根据这段代码,100000个数字必须存储在a、b、a1、b1中。但有时,变量 b1(由并行进程更新的列表)少于 100000 个数字(保持在 90000 和 100000 之间变化)。我想知道为什么...

Strange Memory Allocation

最佳答案

List<T>对于同时写入的多个线程来说不是线程安全的,如 MSDN page 中所述.您必须同步访问(违背多线程的目的)或使用线程安全的集合。 System.Collections.Concurrent 中有可用的线程安全集合命名空间。

关于c# - 并行处理期间的值存储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14079158/

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