Merge pull request #5714 from alexischr/update_bockbuild
[mono.git] / mono / tests / threadpool.cs
1 using System;
2 using System.Threading;
3
4 public class ThreadPoolTest
5 {
6
7         static int csum = 0;
8         
9         public static void test_callback (object state) {
10                 Console.WriteLine("test_callback:" + state);
11                 Thread.Sleep (200);
12                 Interlocked.Increment (ref csum);
13         }
14         
15         public static int Main () {
16                 int workerThreads;
17                 int completionPortThreads;
18                 
19                 ThreadPool.GetMaxThreads (out workerThreads, out completionPortThreads);
20                 Console.WriteLine ("workerThreads: {0} completionPortThreads: {1}", workerThreads, completionPortThreads);
21                 
22                 ThreadPool.GetAvailableThreads (out workerThreads, out completionPortThreads);
23                 Console.WriteLine ("workerThreads: {0} completionPortThreads: {1}", workerThreads, completionPortThreads);
24
25                 ThreadPool.QueueUserWorkItem (new WaitCallback (test_callback), "TEST1");
26                 ThreadPool.QueueUserWorkItem (new WaitCallback (test_callback), "TEST2");
27                 ThreadPool.QueueUserWorkItem (new WaitCallback (test_callback), "TEST3");
28                 ThreadPool.QueueUserWorkItem (new WaitCallback (test_callback), "TEST4");
29                 ThreadPool.QueueUserWorkItem (new WaitCallback (test_callback), "TEST5");
30                 ThreadPool.QueueUserWorkItem (new WaitCallback (test_callback));
31
32                 while (csum < 6) {
33                         Thread.Sleep (100);
34                 }
35
36                 Console.WriteLine ("CSUM: " + csum);
37
38                 if (csum != 6)
39                         return 1;
40
41                 return 0;
42         }
43 }
44