Advertisement
kikosiak

Untitled

Dec 9th, 2019
133
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.81 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Threading;
  4.  
  5. namespace SynchroWait
  6. {
  7.     class Program
  8.     {
  9.  
  10.         static List<Thread> watki = new List<Thread>();
  11.         static readonly int liczbaIteracji = 5;
  12.         static readonly int liczbaWatkow = 10;
  13.         static Random rand = new Random();
  14.  
  15.  
  16.         static void Main(string[] args)
  17.         {
  18.             ManualResetEvent[] events = new ManualResetEvent[liczbaWatkow];
  19.             for (int i = 0; i < liczbaWatkow; i++)
  20.             {
  21.                 events[i] = new ManualResetEvent(false);
  22.                 var watek = new Thread((o) =>
  23.                 {
  24.                     int nrWatku = (int)o;
  25.                     Thread.Sleep(rand.Next(1000));
  26.                     Console.WriteLine("Wątek nr {0} wystartował", nrWatku);
  27.                     for (int j = 0; j < liczbaIteracji; j++)
  28.                     {
  29.                        
  30.                         Console.WriteLine("Wątek nr {0} pracuje w iteracji nr {1}", nrWatku, j);
  31.                         Thread.Sleep(rand.Next(1000));
  32.                        
  33.                     }
  34.                     Thread.Sleep(rand.Next(1000));
  35.                     events[nrWatku].Set();            
  36.                     Console.WriteLine("Wątek nr {0} zakończył działanie", nrWatku);
  37.                 });
  38.                 watki.Add(watek);
  39.                 watek.Start(i);
  40.             }
  41.             WaitHandle.WaitAny(events);
  42.            // WaitHandle.WaitAll(events);
  43.             Console.WriteLine("---------------- Doczekaliśmy się -----------------");
  44.            
  45.  
  46.             foreach (var w in watki)
  47.             {
  48.                 w.Join();
  49.             }
  50.  
  51.             Console.WriteLine("To już jest koniec, naciśnij ENTER...");
  52.             Console.ReadLine();
  53.         }
  54.     }
  55. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement