Hi,
Quoting Fred Gilham ([EMAIL PROTECTED]):
> Some time ago I made an interactive stream package that works with
> Garnet. Unfortunately it never worked completely right.
[...]
> ftp:ftp.csl.sri.com/pub/users/gilham/garnet-interactive-streams.tar
I haven't looked at your code yet. However, I'm doing quite nicely with
multiple REPLs here, so I can at least testify for the feasibility of
that approach.
> Creating the second one, you notice (or I do, at least) that the
> window takes a while to initialize. Then if you run
Some of the issues I've had to deal with are:
(1) making sure the initial process (which is treated specially by the
scheduler) doesn't get in the way of fine-grained scheduling.
(2) I'm passing events between multiple processes using a thread-safe
queue. To get sensible performance I found out I couldn't use
PROCESS-WAIT using the current scheduler. However, a semi-simple
WAIT/NOTIFY interface turned out to work perfectly, which
(explicitly) disables and enables process which want to block for
data to show up.
(3) Interrupting processes to get into the debugger by selecting the
target process after hitting C-c (ACL-style) is easy to do, but
getting the debugger to work with gray streams requires some
carefulness. *DEBUG-IO* musn't be a gray stream at all, so I used
a SYNONYM-STREAM. GC messages which went to my streams crashed
everything, so I customized them to go to somewhere else
(sys::*tty*) instead. FORMAT for condition printing wants
file-position, which doesn't work with gray streams.
(4) the debugger inhibits scheduling, which sounds sensible, but turns
out to be not only enormously annoying, but also a real issue for
stability (AFAICT, that is). So I'm changing it to not inhibit
the scheduler, which sounds dangerous but works well in practise
for me (not warranty whatsoever of course... YMMV ;-) ).
For (1) and most of (3) and (4), have a look at `world.lisp' in
http://cvs.lichteblau.com/world/ . (The script is described at
www.lichteblau.com/code/world, but you want the upcoming version from
CVS, not the old tarball.)
(Also, paserve has a similar hack to avoid (1).)
For (2), drop me a mail; that's part of my curses interface which I
didn't release yet.
> (mp:show-processes)
>
> in each window, you get different results.
Reproducible results?
You aren't binding mp:*all-processes*, are you? </bold-accusation>
David