Многопоточная обработка двумерного массива! - C#

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

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

Это многопоточная обработка одномерного массива. Помогите исправить из одномерного массива в двумерный, буду очень признателен.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
 
namespace MyProgram
{
    class Program
    {
        static void Main(string[] args)
        {
            Random rnd = new Random();
            Vector v = new Vector(100, 6, rnd);
            v.Start();
            Console.ReadKey();
        }
    }
    class Vector
    {
        int[] array;
        int threadCount;
        public Vector(int size, int threadCount, Random rnd)
        {
            array = new int[size];
            for (int i = 0; i < size; i++)
            {
                array[i] = rnd.Next(100);
            }
            this.threadCount = threadCount;
        }
 
        void Run(object i)
        {
            int k = array.Length / threadCount;
 
            for (int j = (int)i * k; j < ((int)i + 1) * k; j++)
            {
                array[j] = (int)Math.Pow(array[j], 3);
                Console.WriteLine("Поток {0}", (int)i + 1);
            }
        }
 
        public void Start()
        {
            Thread[] t = new Thread[threadCount];
 
            for (int i = 0; i < threadCount; i++)
            {
                DateTime dt1, dt2;
                dt1 = DateTime.Now;
                dt2 = DateTime.Now;
                TimeSpan ts = dt2 - dt1;
                t[i] = new Thread(new ParameterizedThreadStart(Run));
                t[i].Start(i);
                t[i].Join(i);
                Console.WriteLine("Основной поток: Завершение рабочего потока.");
                Console.WriteLine("Время выполнение: {0}", ts.TotalMilliseconds);
            }
        }
    }
}

Решение задачи: «Многопоточная обработка двумерного массива!»

textual
Листинг программы
class Vector
{
    int[,] array;
    int threadCount;
    public Vector(int size, int threadCount, Random rnd)
    {
        array = new int[size, size];
        for (int i = 0; i < size; i++)
            for (int j = 0; j < size; j++)
                array[i, j] = rnd.Next(100);
        this.threadCount = threadCount;
    }
 
    void Run(object i)
    {
        int k = array.GetLength(0) / threadCount;
           
        for (int m = 0; m < array.GetLength(0); m++)
        {
            for (int j = (int)i * k; j < ((int)i + 1) * k; j++)
            {
                array[m, j] = (int)Math.Pow(array[m, j], 3);
                Console.WriteLine("Поток {0}", (int)i + 1);
            }
        }
    }
 
    public void Start()
    {
        Thread[] t = new Thread[threadCount];
 
        for (int i = 0; i < threadCount; i++)
        {
            DateTime dt1, dt2;
            dt1 = DateTime.Now;
            dt2 = DateTime.Now;
            TimeSpan ts = dt2 - dt1;
            t[i] = new Thread(new ParameterizedThreadStart(Run));
            t[i].Start(i);
            t[i].Join(i);
            Console.WriteLine("Основной поток: Завершение рабочего потока.");
            Console.WriteLine("Время выполнение: {0}", ts.TotalMilliseconds);
        }
    }
}

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


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

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

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