Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Threading;
- namespace SynchroWait
- {
- class Program
- {
- static List<Thread> watki = new List<Thread>();
- static readonly int liczbaIteracji = 5;
- static readonly int liczbaWatkow = 10;
- static Random rand = new Random();
- static void Main(string[] args)
- {
- ManualResetEvent[] events = new ManualResetEvent[liczbaWatkow];
- for (int i = 0; i < liczbaWatkow; i++)
- {
- events[i] = new ManualResetEvent(false);
- var watek = new Thread((o) =>
- {
- int nrWatku = (int)o;
- Thread.Sleep(rand.Next(1000));
- Console.WriteLine("Wątek nr {0} wystartował", nrWatku);
- for (int j = 0; j < liczbaIteracji; j++)
- {
- Console.WriteLine("Wątek nr {0} pracuje w iteracji nr {1}", nrWatku, j);
- Thread.Sleep(rand.Next(1000));
- }
- Thread.Sleep(rand.Next(1000));
- events[nrWatku].Set();
- Console.WriteLine("Wątek nr {0} zakończył działanie", nrWatku);
- });
- watki.Add(watek);
- watek.Start(i);
- }
- WaitHandle.WaitAny(events);
- // WaitHandle.WaitAll(events);
- Console.WriteLine("---------------- Doczekaliśmy się -----------------");
- foreach (var w in watki)
- {
- w.Join();
- }
- Console.WriteLine("To już jest koniec, naciśnij ENTER...");
- Console.ReadLine();
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement