Merge pull request #463 from strawd/concurrent-requests
[mono.git] / mono / tests / finalizer-wait.cs
index 9b9bf2dc3df4f6d98f2759cf9e1b2f97dcd24fe9..dde31cbc345b5c5bc1adff7db1d8959454b7234b 100644 (file)
@@ -6,35 +6,25 @@ class P {
 
        static public int count = 0;
        ~P () {
-               T.finalized = true;
-               Thread.Sleep (1000);
                // Console.WriteLine ("finalizer done");
                count++;
        }
 }
 
 class T {
-
-       static public bool finalized = false;
-
-       static void makeP () {
-               P p = new P ();
-               p = null;
-       }
-
        static int Main () {
-               var t = new Thread (makeP);
-               t.Start ();
-               t.Join ();
-
-               GC.Collect ();
-               while (!finalized) {
-                       Thread.Sleep (100);
+               for (int i = 0; i < 1000; ++i) {
+                       var t = new Thread (() => {
+                                       P p = new P ();
+                               });
+                       t.Start ();
+                       t.Join ();
+
+                       GC.Collect ();
+                       GC.WaitForPendingFinalizers ();
+                       if (P.count != i + 1)
+                               return 1;
                }
-               GC.WaitForPendingFinalizers ();
-
-               if (P.count == 0)
-                       return 1;
                return 0;
        }
 }