[sgen] Disable parallel mode if not enough cores
authorVlad Brezae <brezaevlad@gmail.com>
Fri, 9 Jun 2017 22:43:04 +0000 (01:43 +0300)
committerVlad Brezae <brezaevlad@gmail.com>
Fri, 9 Jun 2017 22:43:04 +0000 (01:43 +0300)
mono/sgen/sgen-gc.c

index ed48b8eb66507c46d5a7003237ee1b68f6cb257d..03dfc5cfddd49c9ea8021b4439ec785992753ca2 100644 (file)
@@ -3436,10 +3436,14 @@ sgen_gc_init (void)
                int num_workers = 1;
                if (major_collector.is_parallel || sgen_minor_collector.is_parallel) {
                        num_workers = mono_cpu_count ();
-                       if (num_workers < 1)
+                       if (num_workers <= 1) {
                                num_workers = 1;
+                               major_collector.is_parallel = FALSE;
+                               sgen_minor_collector.is_parallel = FALSE;
+                       }
                }
-               sgen_workers_init (num_workers, (SgenWorkerCallback) major_collector.worker_init_cb);
+               if (major_collector.is_concurrent || sgen_minor_collector.is_parallel)
+                       sgen_workers_init (num_workers, (SgenWorkerCallback) major_collector.worker_init_cb);
        }
 
        sgen_memgov_init (max_heap, soft_limit, debug_print_allowance, allowance_ratio, save_target);