Description
Coming from CPU-parallel programming, I expected when_all
to be used as a customization point like bulk
your allow schedulers to kick off parallelism. After discussion with @lewissbaker and others, it became clear that that’s not the design intent and that when_all
is intended to be just the “join” part of a split/join, where the expected usage for CPU-parallel computing is when_all(schedule_on(sch, snd0), schedule_on(sch, snd1))
.
I think the wording should do more to explicitly state that when_all
is intended to not be parallel so people don’t write schedulers that customize it like that and don’t write algorithms assuming it parallelizes.
(I could see permitting when_all
you schedule each of its senders, e.g., if the scheduler knows it has an abnormally small stack size.)
Related: #277