"Hans Hübner" hans@huebner.org writes:
The major advantage of Lisp processes implemented as native threads is that scheduling can occur while a Lisp process is executing foreign code, whereas with a Lisp scheduler, entering a foreign function will prevent scheduling.
You may want to read the "tackling the awkward squad" paper by Simon Peyton Jones. It's done in Haskell, but it would be awesome to see in Lisp. Basically, there is a native thread per CPU for computation, coroutines-based threads (like Erlang or CMUCL) on top of those for abstraction, asynchronious IO to avoid blocking, and thread pool for native calls (again, to avoid blocking). The way of the future, IMO.