[slime-devel] Re: interrupt and multiple processes

Luke Gorrie luke at bluetail.com
Thu Jan 8 23:51:00 UTC 2004


Hi Gary,

Thanks for the nice description of how threading works.

> Asynchronous signals tend not to carry much information; it's not clear
> that we could use them to implement IPC requests that asked another
> OS process to interrupt a specific thread.  I'm not sure what kind
> of IPC mechanisms SWANK/SLIME already provide that might deal with
> the "OS process as a whole", but the lisp side of it could just involve
> a thread that listens for IPC requests over a socket that's created
> when SLIME first starts the lisp OS process. Or something.
> 
> (defvar *slime-control-socket* ... "created when SLIME starts the OS process")

This seems likely the way to go. With the "socket per thread" plan we
already need a control channel so that a Lisp thread hitting the
debugger can ask Emacs to open a connection (Emacs can't portably
accept incoming ones). Hopefully we can kill two birds with one stone.

It's interesting trying to make sure that designs work with
single-threaded, single-threaded+SERVE-EVENT, and multithreaded. In
this case I think it's simple and we'll only use a control connection
in the multithreaded case.

-Luke






More information about the slime-devel mailing list