When an Executor is constructed with 0 workers it now runs task graphs
synchronously on the calling thread instead of spawning a worker pool,
so the process stays truly single-threaded (no worker/notifier threads).
_run_inline() executes a fully-built static graph in topological order,
mirroring the scheduler's rules: a node runs once its strong
(non-conditioner) predecessors are met; a condition node runs its int()
work and activates only the selected successor. Handles Static, Module
(composed_of, recursed), Condition and MultiCondition tasks.
this_worker_id() reports 0 in inline mode (the caller is the sole
worker).
When an Executor is constructed with 0 workers it now runs task graphs synchronously on the calling thread instead of spawning a worker pool, so the process stays truly single-threaded (no worker/notifier threads).
_run_inline() executes a fully-built static graph in topological order, mirroring the scheduler's rules: a node runs once its strong (non-conditioner) predecessors are met; a condition node runs its int() work and activates only the selected successor.
This new mode handles Static, Module (composed_of, recursed), Condition and MultiCondition tasks.
this_worker_id() reports 0 in inline mode (the caller is the sole worker).
References: #797