> The greatest obstacle to this seems to be shallow binding - you'd have
> to unwind one thread's stack and rewind another's when switching
> threads. Maybe there's an easier way that I don't see...
> That is how the Lisp Machine worked. It is not an unreasonable idea.
I think an alternate solution is to have no shared variables between
threads once they are forked, and communicate through standard IPC
(pipes, semaphores, etc.). This would preserve backwards
compatibility and speed, while using more memory and making the
programmers' job harder (but the lower number of bugs may be worth