diff options
author | Boris Kolpackov <boris@codesynthesis.com> | 2019-10-22 10:02:23 +0200 |
---|---|---|
committer | Boris Kolpackov <boris@codesynthesis.com> | 2019-10-22 10:17:41 +0200 |
commit | b47a323f09f1f9ccece03ca4d84dbe7a47ff8177 (patch) | |
tree | 7c520e5878b1988425520424c5e372f7439636d9 /build2/b.cxx | |
parent | 1bbd6bdb1bbf6783aefd10392e5c0599318a927f (diff) |
Move global mutex shards to context
Diffstat (limited to 'build2/b.cxx')
-rw-r--r-- | build2/b.cxx | 27 |
1 files changed, 12 insertions, 15 deletions
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<size_t> (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<size_t> (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<context> 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 |