Thanks for this well written article.
Makes me wonder _why_ OS threads are so inefficient. Seems like that is a problem to be solved, rather than putting the burden on application processes to embed their own scheduler, blocking, and wakeup.
And when a virtual thread is blocked, what is the means by which it is notified when it needs to resume? Is there a loop running in the background checking, consuming CPU cycles?
When Java first came out, it had virtual threads - the JVM implemented threads using the so-called "Green Threads" code, which was a thread scheduler built into the VM. A few years later Sun replaced that with OS thread integration, and that was seen as a huge achievement. Now we are going backwards, and saying that is better. Is there data that shows that it actually is? And again, if it is, I would wonder why OS threads are so inefficient.