diff options
author | Boris Kolpackov <boris@codesynthesis.com> | 2017-01-27 15:25:26 +0200 |
---|---|---|
committer | Boris Kolpackov <boris@codesynthesis.com> | 2017-02-13 12:42:41 +0200 |
commit | f93038fbee1631b95922b0742e0fd00fa8dae02e (patch) | |
tree | 6fe67cbde528ee8ded490085b9a8d5adc0ce5aca /build2/dist/operation.cxx | |
parent | 267d34d2800d9cc3ed2865cbecf8d32f8f1ab6ec (diff) |
Add notion of phase, enforce
Diffstat (limited to 'build2/dist/operation.cxx')
-rw-r--r-- | build2/dist/operation.cxx | 44 |
1 files changed, 24 insertions, 20 deletions
diff --git a/build2/dist/operation.cxx b/build2/dist/operation.cxx index 06df0be..c7fe83b 100644 --- a/build2/dist/operation.cxx +++ b/build2/dist/operation.cxx @@ -115,31 +115,35 @@ namespace build2 if (verb >= 6) dump (a); - scheduler::atomic_count task_count (0); { - model_slock ml; + phase_guard pg (run_phase::search_match); - for (void* v: ts) + scheduler::atomic_count task_count (0); { - target& t (*static_cast<target*> (v)); - - if (rs != t.base_scope ().root_scope ()) - fail << "target " << t << " is from a different project" << - info << "one dist() meta-operation can handle one project" << - info << "consider using several dist() meta-operations"; - - l5 ([&]{trace << diag_doing (a, t);}); - - sched.async (task_count, - [a] (target& t) - { - model_slock ml; - build2::match (ml, a, t); // @@ MT exception. - }, - ref (t)); + model_slock ml; + + for (void* v: ts) + { + target& t (*static_cast<target*> (v)); + + if (rs != t.base_scope ().root_scope ()) + fail << "target " << t << " is from a different project" << + info << "one dist() meta-operation can handle one project" << + info << "consider using several dist() meta-operations"; + + l5 ([&]{trace << diag_doing (a, t);}); + + sched.async (task_count, + [a] (target& t) + { + model_slock ml; + build2::match (ml, a, t); // @@ MT exception. + }, + ref (t)); + } } + sched.wait (task_count); } - sched.wait (task_count); if (verb >= 6) dump (a); |