From b47a323f09f1f9ccece03ca4d84dbe7a47ff8177 Mon Sep 17 00:00:00 2001 From: Boris Kolpackov Date: Tue, 22 Oct 2019 10:02:23 +0200 Subject: Move global mutex shards to context --- build2/b.cxx | 27 ++++++++++++--------------- 1 file changed, 12 insertions(+), 15 deletions(-) (limited to 'build2/b.cxx') diff --git a/build2/b.cxx b/build2/b.cxx index d6b364d..0183e0f 100644 --- a/build2/b.cxx +++ b/build2/b.cxx @@ -556,19 +556,15 @@ main (int argc, char* argv[]) fail << "invalid --max-jobs|-J value"; } - sched.startup (jobs, - 1, - max_jobs, - jobs * ops.queue_depth (), - (ops.max_stack_specified () - ? optional (ops.max_stack () * 1024) - : nullopt)); - - // @@ CTX: should these be per-context? - // - variable_cache_mutex_shard_size = sched.shard_size (); - variable_cache_mutex_shard.reset ( - new shared_mutex[variable_cache_mutex_shard_size]); + sched.startup (jobs, + 1, + max_jobs, + jobs * ops.queue_depth (), + (ops.max_stack_specified () + ? optional (ops.max_stack () * 1024) + : nullopt)); + + global_mutex_shards mutex_shards (sched.shard_size ()); // Trace some overall environment information. // @@ -588,10 +584,11 @@ main (int argc, char* argv[]) // below). // unique_ptr ctx; - auto new_context = [&ctx, &sched, &cmd_vars] + auto new_context = [&ctx, &sched, &mutex_shards, &cmd_vars] { ctx = nullptr; // Free first. ctx.reset (new context (sched, + mutex_shards, ops.dry_run (), !ops.serial_stop () /* keep_going */, cmd_vars)); @@ -1425,7 +1422,7 @@ main (int argc, char* argv[]) continue; // If we have a directory, enter the scope, similar to how we do - // it in the context's reset(). + // it in the context ctor. // scope& s (o.dir ? sm.insert ((out_base / *o.dir).normalize ())->second -- cgit v1.1