5.0: Calling back into Lisp from foreign threads still doesn't seem to work
Hi!
I thought that one of the new features of LW 5.0 was the fact that one
could call back into Lisp from any thread. However, from my
experience this doesn't seem to be the case. I'm using an example
that was originally sent to the RDNZL mailing list by Richard Fateman,
see here:
http://common-lisp.net/pipermail/rdnzl-devel/2005-December/000041.html
It turned out this didn't work with LispWorks (4.4.6) and AllegroCL[*]
at that time, but it did work with CormanLisp which seems to have
another threading model.
A workaround that worked for LispWorks (4.4.6, again) was to build a
DLL. See here:
http://common-lisp.net/pipermail/rdnzl-devel/2005-December/000044.html
http://common-lisp.net/pipermail/rdnzl-devel/2006-January/000047.html
http://weitz.de/lw-callbacks/
Now, a couple of months later, LispWorks 5.0 has arrived and I thought
that the DLL workaround wasn't needed anymore. Unfortunately, it
still is, i.e. if I call MJNETRS2 from a normal LispWorks 5.0 image,
it still blocks, if I call it from a LispWorks 5.0 DLL (built as
described above), it works fine.
So, am I missing something or is calling back from foreign threads
into Lisp still something that doesn't work reliably?
Thanks,
Edi.
[*] With the current AllegroCL and the latest RDNZL it works fine,
by the way.