This is second-hand knowledge. I've never really ever used cmucl's
threads. Douglas Crosher would be the one who would know the fine details.
Yes, cmucl has user-space green threads. They're implemented by using
separate stacks for each thread. (For some reason switching threads
causes the stack to be copied instead of just switching the stack
pointer to the correct stack. I think.)
You can use sigalarm to switch tasks, but this doesn't work very well
because a lot of the code is not interrupt-safe. It's best to
cooperatively schedule threads. I think if a thread blocks, another
thread will be started, but I'm not sure about that either, and it might
only be for sockets.
Ray