Синхронизировать три нити одного процесса с помощью оператора 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);
}

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


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

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

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