Как заполнить массив в несколько потоков?

Есть такой массив, знаю что нужно через Thread, а как делать не пойму. Нужно разбивать массив на части, или можно сразу как-то сделать?

Stopwatch stopWatch = new Stopwatch();
                stopWatch.Start();
                int[] a = new int[10000];
                Random rand = new Random();
    
                for (int i = 0; i < a.Length; i++)
                {
                    a[i] = rand.Next(-100, 100);
                }
                foreach (var p in a)
                    Console.WriteLine(p);
                TimeSpan ts = stopWatch.Elapsed;
                stopWatch.Stop();
                string elapsedTime = String.Format("{0:00}:{1:00}:{2:00}.{3:00}",
                ts.Hours, ts.Minutes, ts.Seconds,
                ts.Milliseconds / 10);
                Console.WriteLine("RunTime " + elapsedTime);

Ответы (1 шт):

Автор решения: ebw1910

В этом примере я делю массив на блоки по 4000 байтов (1000 элементов) каждый и работаю с каждым блоком в отдельном потоке.

using System.Threading.Tasks;
    
var array = new int[10000];
var offsets = Enumerable.Range(0, 10).Select( x => x * 1000 );
Parallel.ForEach( offsets, offset => {
    for ( int i=0; i<1000; i++ )
    {
        array[offset + i] = random.Next( -100,100 );
    }
});

→ Ссылка