I think we have a shared understanding. Just wanted to comment here:
> That's non-blocking I/O ;-)
In other words, blocking code is so desirable that the kernel has been engineered to enable you to do it, and abstracts away the difficult engineering of dealing with async I/O devices.
I personally find great leverage from using OS kernel features, that I just don't get from languages and libraries.
> Java's virtual threads are only preempted at specific points (I/O, sleep, etc.)
Yes, this is a general weakness of the language run-time async. If we accept the premise that OS threads have too much overhead, then from the little bit I know about Java, that approach seems conceptually cleaner than the coloring one.
> That's non-blocking I/O ;-)
In other words, blocking code is so desirable that the kernel has been engineered to enable you to do it, and abstracts away the difficult engineering of dealing with async I/O devices.
I personally find great leverage from using OS kernel features, that I just don't get from languages and libraries.
> Java's virtual threads are only preempted at specific points (I/O, sleep, etc.)
Yes, this is a general weakness of the language run-time async. If we accept the premise that OS threads have too much overhead, then from the little bit I know about Java, that approach seems conceptually cleaner than the coloring one.