diff options
author | Boris Kolpackov <boris@codesynthesis.com> | 2024-02-26 09:14:37 +0200 |
---|---|---|
committer | Boris Kolpackov <boris@codesynthesis.com> | 2024-02-26 09:14:37 +0200 |
commit | 4a2a3bd5033744c31377d31ca54be00622280a1b (patch) | |
tree | 616cc10d585dd40ab252f02b55ff44c694c18fb4 /libbuild2/scheduler.ixx | |
parent | 75cedf46dba58e94b55678dc64bd4f77e23de5cd (diff) |
Add ability to request serialization from scheduler
In particular, this can be used to make sure no other recipe is being
executed in parallel with the caller.
Diffstat (limited to 'libbuild2/scheduler.ixx')
-rw-r--r-- | libbuild2/scheduler.ixx | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/libbuild2/scheduler.ixx b/libbuild2/scheduler.ixx index 96eaee1..f46d035 100644 --- a/libbuild2/scheduler.ixx +++ b/libbuild2/scheduler.ixx @@ -44,6 +44,20 @@ namespace build2 return suspend (start_count, task_count); } + inline void scheduler:: + deactivate (bool external) + { + if (max_active_ != 1) // Serial execution. + deactivate_impl (external, lock (mutex_)); + } + + inline void scheduler:: + activate (bool external) + { + if (max_active_ != 1) // Serial execution. + activate_impl (external, false /* collision */); + } + inline scheduler::queue_mark:: queue_mark (scheduler& s) : tq_ (s.queue ()) |