Ahoy,
I checked in some very basic multiprocessing support. It works with SBCL and CMUCL and it should be easy to port.
Threads automatically create new connections on-demand and can all talk to Emacs at the same time. There is no flow-control, so if 20 threads hit the debugger at once then you can expect 20 layers of SLDB buffers to pop up :-). There is no real policy for standard I/O streams or for interrupting yet -- "it does what it does".
There is some commentary in swank.lisp about how multiple-connections work from the Lisp side (short version: one per thread created on demand). I also changed (shrunk) the multiprocessing interface in swank-backend, it should be implementable in 20 lines or so and all that's needed for a port.
For people already using threads it should be a great improvement. For people not using threads it shouldn't break anything.
There's a caveat for SBCL: spawning threads from SLIME (e.g. the REPL) doesn't work properly. When you spawn a thread in SBCL it inherits the dynamic bindings from its parent, but it seems to get some things that were supposed to be thread-specific/temporary in the bargain. I'll ask Dan about this stuff when he gets back online.
BTW, there is a job opening for a threads user-interface designer/hacker. Helmut and I aren't threads users, so we're not the guys to do this stuff. It would be better for some threads hacker(s) to muck around and figure out a good UI, and we can help with the infrastructure (which is hopefully mostly there now).
Cheers, Luke