Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading;
- using System.Threading.Tasks;
- namespace ConsoleApp24
- {
- class Program
- {
- static void Main(string[] args)
- {
- /*
- Console.WriteLine("Countdown example");
- for (int i = 0; i < CountDownEventExample.numEvents i++)
- {
- //Console.WriteLine("Press <Enter>");
- //Console.ReadLine();
- Thread t = new Thread(CountDownEventExample.MyMethod);
- t.Name = "Thread " + i;
- t.Start();
- }
- CountDownEventExample.countDownEvent.Wait();
- Console.WriteLine("Unblocked");
- Console.ReadLine();*/
- /*
- Console.WriteLine("Barrier example");
- Thread t1 = new Thread(BarrierExample.MyMethod);
- t1.Name = "1";
- Thread t2 = new Thread(BarrierExample.MyMethod);
- t2.Name = "2";
- t1.Start();
- t2.Start();*/
- Thread[] threads = new Thread[5];
- for (int i = 0; i < threads.Length; i++)
- {
- threads[i] = new Thread(BarrierExample2.MyMethod);
- threads[i].Name = "Thread " + i;
- }
- for (int i = 0; i < threads.Length; i++)
- {
- threads[i].Start();
- }
- Console.ReadLine();
- }
- }
- class CountDownEventExample
- {
- public static int numEvents = 2;
- public static CountdownEvent countDownEvent = new CountdownEvent(numEvents);
- public static void MyMethod()
- {
- for (int i = 0; i < 5; i++)
- {
- Console.WriteLine(Thread.CurrentThread.Name + " " + i);
- Thread.Sleep(200);
- }
- countDownEvent.Signal();
- }
- }
- class BarrierExample
- {
- public static Barrier barrier = new Barrier(2); //2 threads
- public static void MyMethod()
- {
- for (int i = 0; i < 4; i++)
- {
- Console.WriteLine("Thread {0} reached phase {1}",
- Thread.CurrentThread.Name, barrier.CurrentPhaseNumber);
- barrier.SignalAndWait();
- }
- }
- }
- class BarrierExample2
- {
- public static Barrier barrier = new Barrier(5); //2 threads
- public static void MyMethod()
- {
- Random r = new Random();
- for (int i = 0; i < 5; i++)
- {
- Thread.Sleep(r.Next(1000));
- Console.WriteLine("Thread {0} reached phase {1}",
- Thread.CurrentThread.Name, barrier.CurrentPhaseNumber);
- barrier.SignalAndWait();
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement