小编Joh*_*ohn的帖子

并行的foreach循环 - 奇怪的行为

下面的代码只是创建一个List> of random numbers,然后计算并行foreach循环中每个列表的累积和.为什么我得到的数字少于'numLists'?通常在9990左右.我猜它与线程安全有关.什么是替代方法?(我是C#初学者,所以希望我使用正确的术语)谢谢.

using System;  
using System.Collections.Generic;  
using System.Threading.Tasks;  

namespace testParallelForeach
{
    class Program
    {
        static void Main(string[] args)
        {

            List<List<double>> bsData = new List<List<double>>();
            List<List<double>> cumsumDataP = new List<List<double>>();
            int numLists = 10000;
            int myLen = 400;
            Random rand = new Random();
            for (int i = 0; i < numLists; i++)
            {
                bsData.Add(new List<double>());
                for (int j = 0; j < myLen; j++)
                {
                    bsData[i].Add(rand.NextDouble());
                }
            }
            Parallel.ForEach(bsData, a => cumsumDataP.Add(CumulativeSumParallel(a)));
            Console.WriteLine("cumsumDataP.Count={0}", cumsumDataP.Count);
            Console.ReadKey();

        }

        public static List<double> …
Run Code Online (Sandbox Code Playgroud)

.net c# parallel-processing

9
推荐指数
1
解决办法
2544
查看次数

标签 统计

.net ×1

c# ×1

parallel-processing ×1