Marl does exactly this. The scheduler guarantees that once a task is started on a particular thread, it will only resume on that same thread. This allows us to save a bare minimum of registers and state.
Some more info here: https://github.com/google/marl/blob/cbef55d588bc28661bedb822...