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