[slime-devel] slime & sbcl event-loop issues
xristos
xristos at suspicious.org
Sun Feb 15 16:32:38 UTC 2009
On 15 Feb 2009, at 10:50, Helmut Eller wrote:
> I'm not sure what you need. Usually, the "initial" thread blocks in
> SB-SYS:WAIT-UNTIL-FD-USABLE which calls SERVE-EVENT with
> both :spawn and
> :fd-handler. At least that used to be so.
>
I think that serve-event works on a per thread basis. This means that
serve-event must be called from the thread that registered the handlers
for it to actually do any dispatching. It behaves like this here anyway.
>
> With :fd-handler style, SLIME registers a fd-handler but doesn't call
> SERVE-EVENTS directly. SERVE-EVENTS is called by the initial thread
> which waits for input on *standard-input* in the *inferior-lisp*
> buffer.
>
This is not what i've observed here. Using fd-handler, if i call
something
that registers handlers from the slime repl, my callbacks will never get
called /unless/ i give input to slime (typing enter in the repl seems
to do
it), and i have to do this everytime i want my callbacks to run. So,
it appears
that slime hijacks the event loop as events are not dispatched
asynchronously.
>
> With :spawn style SLIME doesn't touch SERVE-EVENTS.
>
> Is there a problem if you run the event-loop in your own thread?
>
>
With :spawn style, if i call something that registers handlers from
the slime repl (repl-thread), then these callbacks will NEVER get
called period. This is probably because serve-event is never called
from the repl-thread (which seems logical as it continuously waits
on a lock). Even if i have another thread calling serve-event, nothing
changes (event handling seems to be per thread).
Chris
More information about the slime-devel
mailing list