Заполнение массивов в отдельных потоках - C#

Узнай цену своей работы

Формулировка задачи:

Всем доброго времени суток. Вопрос касается потоков в c#. написал говнокод небольшую консольную прожку, которая должна заполнять int массивы в разных потоках. по идеи так они будут заполняться быстрее чем в одном. Коллекция массивов в одном потоке заполняется так :
 
        static List<int[]> massives = new List<int[]>();
        ...
        static void func()
        {
            for (int j = 0; j < mass; j++)
            {
                massives.Add(new int[count]);
                for (int i = 0; i < count; i++)
                {
                    massives[j][i] = _rand.Next(1, 101);
                    Console.WriteLine("Массив " + j +
                        " заполнен " + massives[j][i]);
                }
            }
        }
пока все нормально, но когда пытаюсь раскидать заполнение каждого массива в отдельный поток :
      
        static void threadfunc()
        {
            for (int j =0; j < mass; j++)
            {
                 massives.Add(new int[count]);
                 new Thread (delegate(){
                  for (int i = 0; i < count; i++)
                  {
                      massives[j][i] = _rand.Next(1,101); //индекс за границами диапазона
                      Console.WriteLine("Массив "+ j +" из потока " + j + " Заполнен " + massives[j][i]);
                  };
                  }).Start();
            }
        }
возникает ошибка

индекс за границами диапазона

. С чем это связано, как исправить? Спасибо

Решение задачи: «Заполнение массивов в отдельных потоках»

textual
Листинг программы
// Код с ошибкой
for (int j=0; j<10; j++)
{
    new Thread(() => { for (int i=0; i<100000000; i++); Console.WriteLine(j); } ).Start();
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 3.6 из 5
Похожие ответы