Синхронизировать три нити одного процесса с помощью оператора lock - C#
Формулировка задачи:
Синхронизировать три нити одного процесса с помощью оператора
lock. Каждая нить формирует 5 чисел для одноименной строки матрицы 3х5.
Числа первой нити формируются в диапазоне от 10 до 19, второй нити – от
20 до 29 и третьей нити – от 30 до 39. Процесс управляет всеми нитями и
выводит на экран результат их работы.
Решение задачи: «Синхронизировать три нити одного процесса с помощью оператора lock»
textual
Листинг программы
- void Main()
- {
- var matrix = new int[3, 5];
- var random = new Random();
- var threads = new List<Thread>();
- threads.Add(new Thread(() => Generate(matrix, 0, 10, 20, random)));
- threads.Add(new Thread(() => Generate(matrix, 1, 20, 30, random)));
- threads.Add(new Thread(() => Generate(matrix, 2, 30, 40, random)));
- foreach (var thread in threads)
- thread.Start();
- foreach (var thread in threads)
- thread.Join();
- for (int i = 0; i < matrix.GetLength(0); i++)
- {
- for (int j = 0; j < matrix.GetLength(1); j++)
- Console.Write($"{matrix[i, j],4}");
- Console.WriteLine();
- }
- }
- void Generate(int[,] matrix, int row, int min, int max, Random random)
- {
- for (int j = 0; j < matrix.GetLength(1); j++)
- lock (matrix.SyncRoot)
- matrix[row, j] = random.Next(min, max);
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д