Многопоточная обработка двумерного массива! - 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); } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д