Передача данных между нитями - C#

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

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

Разработать программу, в которой использовать три дополнительные нити – Н1, Н2 и Н3. Нить Н1 в цикле формирует и печатает массив 10 случайных чисел в диапазоне от минус 40 до 40 и передает его нитям Н2 и Н3. Нить Н2 сортирует только положительные элементы массива и печатает новый массив. Нить Н3 сортирует только отрицательные элементы массива и печатает новый массив.

Решение задачи: «Передача данных между нитями»

textual
Листинг программы
using System;
using System.Threading;
using System.Linq;
 
class Program
{
    int[] _arr;
    static Random _rnd = new Random();
 
    static Semaphore _pool;
    static int _coun = 1;
 
    static void Main()
    {
        Program p = new Program();
 
        Thread h1 = new Thread(() =>
        {
            _pool.WaitOne();
            Console.WriteLine("h1");
 
            p._arr = new int[10];
 
            Thread.Sleep(1000);
 
            for (int i = 0; i < p._arr.Length; i++)
            {
                p._arr[i] = _rnd.Next(-40, 41);
            }
 
            Console.WriteLine(string.Join(" ", p._arr));
            Interlocked.Increment(ref _coun);
 
            _pool.Release();
        });
 
        Thread h2 = new Thread(() =>
        {
            _pool.WaitOne();
            Console.WriteLine("h2");
 
            p._arr = p._arr.OrderBy(n => n > 0).ToArray();
 
            Console.WriteLine(string.Join(" ", p._arr));
 
            _pool.Release();
        });
 
        Thread h3 = new Thread(() =>
        {
            _pool.WaitOne();
            Console.WriteLine("h3");
 
            p._arr = p._arr.OrderBy(n => n < 0).ToArray();
 
            Console.WriteLine(string.Join(" ", p._arr));
 
            _pool.Release();
        });
 
        _pool = new Semaphore(_coun, 3, "Semaphore");
 
        h1.Start();
        h2.Start();
        h3.Start();
 
        h1.Join();
        h2.Join();
        h3.Join();
 
        Console.ReadKey();
    }
}

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


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

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

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