Синхронизировать три нити одного процесса с помощью оператора lock - C#

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

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

Синхронизировать три нити одного процесса с помощью оператора lock. Каждая нить формирует 5 чисел для одноименной строки матрицы 3х5. Числа первой нити формируются в диапазоне от 10 до 19, второй нити – от 20 до 29 и третьей нити – от 30 до 39. Процесс управляет всеми нитями и выводит на экран результат их работы.

Решение задачи: «Синхронизировать три нити одного процесса с помощью оператора lock»

textual
Листинг программы
  1. void Main()
  2. {
  3.     var matrix = new int[3, 5];
  4.     var random = new Random();
  5.  
  6.     var threads = new List<Thread>();
  7.    
  8.     threads.Add(new Thread(() => Generate(matrix, 0, 10, 20, random)));
  9.     threads.Add(new Thread(() => Generate(matrix, 1, 20, 30, random)));
  10.     threads.Add(new Thread(() => Generate(matrix, 2, 30, 40, random)));
  11.    
  12.     foreach (var thread in threads)
  13.         thread.Start();
  14.        
  15.     foreach (var thread in threads)
  16.         thread.Join();
  17.  
  18.     for (int i = 0; i < matrix.GetLength(0); i++)
  19.     {
  20.         for (int j = 0; j < matrix.GetLength(1); j++)
  21.             Console.Write($"{matrix[i, j],4}");
  22.         Console.WriteLine();
  23.     }
  24. }
  25.  
  26. void Generate(int[,] matrix, int row, int min, int max, Random random)
  27. {
  28.     for (int j = 0; j < matrix.GetLength(1); j++)
  29.         lock (matrix.SyncRoot)
  30.             matrix[row, j] = random.Next(min, max);
  31. }

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


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

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

5   голосов , оценка 3.6 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы