Don't know Another thorny issue is resource exhaustion: what if a task is stuck in the infinite loop, or eats all the memory? Perhaps we can just spawn a process?
One interesting observation is that you don't need green threads, if the number of actors is bounded by the number of architectural components, and not by the number of clients.
So I imagine that it should be possible to build systems roughly as follows:
There is one supervising OS process, who monitors everything.
There is one frontend process, which uses async IO and catch unwind to receive connections from unbounded number clients.
There are N backend threads/processes which do actual processing and which just crash and restarted by the supervisor. N is some architecture-dependent constant multiplied by the number of CPUs.
Basically, OS threads/processes as an isolation boundary.