I was going to say with modern PCs this is kinda redundant now, but its still a language of small devices too, where it'll be welcome.
The other cost is context switching, which is much cheaper with virtual threads.
The context switching sucks so much that an alternate approach, swapping threads for throwing an exception on yield and re-running the method and ignoring side-effects until we get back to the resumption point, saves us a significant amount of time.