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