Mach internally uses continuations for kernel thread management.

The advantage is that not a full kernel thread stack has to be preserved in case that a thread is about to enter a blocking state. This saves space. It is not clear this is still worthwhile given today's RAM offerings. (How many kernel threads are there, typically?)

And, this would no longer be possible in case Mach were be made a preemptive kernel. In the latter case, the kernel itself, that is, kernel threads can be preempted, and then their full state needs to be preserved.

See also multithreading.