assuming the question implies "without using threading" - spawn multiple processes and migrate fibers across them as needed.
of course it's not something a developer might want to do, but might be done as part of an user-land library. no idea why one would want that today outside of highly specialized code, but it might be that it could be more portable to other kind of non-preemtible system (i.e. os with fixed time sharing)