[System] Tweak socket test
[mono-project.git] / mono / tests / thread-signal-wait.cs
blobbc182e29cab513a81e20c24979bbf52afa358b1a
2 using System;
3 using System.Threading;
5 public class Test {
6 static Object mon = new Object();
7 static Object reply = new Object();
8 static Object bogus = new Object();
10 private void Thread_func() {
11 Console.WriteLine("thread: In a thread!");
13 Thread.Sleep(10000);
15 Console.WriteLine("thread: Waiting for mon");
17 Monitor.Enter(mon);
18 Monitor.Pulse(mon);
19 Console.WriteLine("thread: Pulsed mon");
20 Monitor.Exit(mon);
22 Thread.Sleep(10000);
24 Monitor.Enter(reply);
25 Console.WriteLine("thread: Got reply mutex");
26 Monitor.Pulse(reply);
27 Console.WriteLine("thread: Pulsed reply");
28 Monitor.Exit(reply);
31 public static int Main () {
32 Console.WriteLine ("main: Hello, World!");
34 Test test = new Test();
35 Thread thr=new Thread(new ThreadStart(test.Thread_func));
36 thr.Start();
38 Monitor.Enter(mon);
39 Console.WriteLine("main: mon lock 1");
41 Monitor.Enter(mon);
42 Console.WriteLine("main: mon lock 2");
44 Console.WriteLine("main: Waiting for mon");
45 Monitor.Wait(mon);
46 Console.WriteLine("main: mon waited");
47 Monitor.Exit(mon);
49 Monitor.Enter(reply);
50 Console.WriteLine("main: reply locked");
51 Monitor.Enter(reply);
52 Console.WriteLine("main: reply locked");
53 Monitor.Enter(reply);
54 Console.WriteLine("main: reply locked");
55 Monitor.Enter(reply);
56 Console.WriteLine("main: reply locked");
57 Monitor.Wait(reply);
58 Console.WriteLine("main: reply waited");
59 Monitor.Exit(reply);
61 Console.WriteLine("Seeing how many locks we have...");
62 Monitor.Exit(reply);
63 Console.WriteLine("main: Exit reply");
64 Monitor.Exit(reply);
65 Console.WriteLine("main: Exit reply");
66 Monitor.Exit(reply);
67 Console.WriteLine("main: Exit reply");
68 Monitor.Exit(reply);
69 Console.WriteLine("main: Exit reply");
70 Monitor.Exit(reply);
71 Console.WriteLine("main: Exit reply");
72 Monitor.Exit(reply);
73 Console.WriteLine("main: Exit reply");
74 Monitor.Exit(reply);
75 Console.WriteLine("main: Exit reply");
77 Monitor.Exit(bogus);
78 Console.WriteLine("main: Exit bogus");
80 return 0;