Merge pull request #5714 from alexischr/update_bockbuild
[mono.git] / mono / tests / manualresetevents.cs
1 using System;
2 using System.Threading;
3
4 class EventTest
5 {  
6         public static ManualResetEvent e;
7
8         // Code for first thread
9         public static void ThreadMethod_waiter_1()
10         {       
11         Console.WriteLine("[Thread A] - Started.....");
12         Console.WriteLine("[Thread A] - I'm before wait for event .....");
13         e.WaitOne();    
14         Console.WriteLine("[Thread A] - I'm after wait for event.");
15         }
16     
17         // Code for second thread
18         public static void ThreadMethod_waiter_2()
19         {       
20         Console.WriteLine("[Thread B] - Started.....");
21         Console.WriteLine("[Thread B] - I'm before wait for event .....");
22         e.WaitOne();    
23         Console.WriteLine("[Thread B] - I'm after wait for event.");
24         }
25
26     // Code for 3th thread
27     public static void ThreadMethod_blocker()
28     {
29         Console.WriteLine("[Thread C] - Started.....");
30         Console.WriteLine("[Thread C] - Sleeping for 5000ms....");
31         Thread.Sleep(5000);
32         Console.WriteLine("[Thread C] - Setting the event....");
33         e.Set();
34         Console.WriteLine("[Thread C] - Finished.....");
35     }
36     
37     
38     public static void Main()
39     {           
40         e = new ManualResetEvent(false);
41
42         
43         // Create the waiter thread's group
44         Console.WriteLine("[  Main  ] - Creating first thread..");
45         ThreadStart Thread_1 = new ThreadStart(ThreadMethod_waiter_1);
46         ThreadStart Thread_2 = new ThreadStart(ThreadMethod_waiter_2);
47         
48         // Create the blocker thread
49         Console.WriteLine("[  Main  ] - Creating second thread..");
50         ThreadStart Thread_3 = new ThreadStart(ThreadMethod_blocker);
51
52         Thread A = new Thread(Thread_1);
53         Thread B = new Thread(Thread_2);
54         Thread C = new Thread(Thread_3);
55         
56         A.Start();
57         B.Start();
58         C.Start();
59         
60         Thread.Sleep(500);
61         Console.WriteLine("[  Main  ] - Finish...");
62     }
63 }