Merge pull request #3913 from omwok/master
[mono.git] / mono / tests / thread-suspend-suspended.cs
1
2 using System;
3 using System.Runtime.CompilerServices;
4 using System.Threading;
5
6 class Driver
7 {
8         public static void Main ()
9         {
10                 bool finished = false;
11
12                 Thread t1 = new Thread (() => {
13                         while (!finished) {}
14                 });
15
16                 Thread t2 = new Thread (() => {
17                         while (!finished) {
18                                 GC.Collect ();
19                                 Thread.Yield ();
20                         }
21                 });
22
23                 t1.Start ();
24                 t2.Start ();
25
26                 Thread.Sleep (10);
27
28                 for (int i = 0; i < 50 * 40 * 20; ++i) {
29                         t1.Suspend ();
30                         Thread.Yield ();
31                         t1.Resume ();
32                         if ((i + 1) % (50) == 0)
33                                 Console.Write (".");
34                         if ((i + 1) % (50 * 40) == 0)
35                                 Console.WriteLine ();
36                 }
37
38                 finished = true;
39
40                 t1.Join ();
41                 t2.Join ();
42         }
43 }