Commit Graph

9 Commits

Author SHA1 Message Date
mainzelm 9950aa7205 Wrap an additional (lambda a ...) around the application of (terminate-current-thread) in terminate-thread! as the continuation may provide any number of values 2002-09-18 19:16:23 +00:00
sperber ac343ba970 Replace Martin's implementation of selective blocking by the one in
Scheme 48 1.0.1.

Namely, instead of associating a list of queues with every thread, we
associate a single cell, holding the thread.  That cell is stored in
thread queues, and once a thread is made runnable again, the cell is
set to #f.  The thread-queue accessors ignore cells containing #f.

Implement an experimental OBTAIN-LOCK-MULTIPLE to test the whole
thing.
2002-08-16 14:11:50 +00:00
sperber 1d35626709 Redo the forking-without-the-threads fix in a way not involving
command levels (as there *are* no command levels for things like scsh
-c):

There's now a new asynchronous event, similar to SPAWN, called NARROW.
It spawns off a new scheduler with just one thread (which runs the
thunk provided as an argument to NARROW) and blocks the current one
until the narrowed scheduler finishes.

For this to work, two schedulers need to be in place: the root
scheduler which performs the housekeeping, and another one inside that
which is the one the program uses---otherwise it's the root scheduler
that's blocked, and that means no housekeeping gets done.  This is
trivially the case for interactive mode, as the command-levels all
have their own schedulers, but we also need to make sure scsh's entry
point fires up its own initial scheduler.
2002-05-03 13:42:36 +00:00
sperber 136e313af7 New implementation of (no-inheritance) thread-local cells and thread
fluids.

New implementation of syslog.

Both are to be compatible with what's actually probably going into
Scheme 48.
2001-12-03 15:21:46 +00:00
mainzelm 1ed75d8531 Let thread-uid->thread invoke the GC if it encounters multiple threads with the same uid. 2001-11-08 10:24:41 +00:00
mainzelm 9552e7900a A thread may life in multiple queues. 2001-10-04 11:16:15 +00:00
sperber 1e212d78a4 Bug fix:
I had forgotten to mark the thread-cell value environment as read-only
when it's passed on to a spawned thread.  Do that now.
2001-05-28 13:31:01 +00:00
sperber 21a8e255eb Added thread-cells structure for thread-local cells.
These can be used (together with fluids) to implement something akin
to PLT's and Chez's parameters for holding thread-local state such as
CWD, syslog channel, etc.
2001-05-22 14:58:15 +00:00
marting 606245fc41 *** empty log message *** 1999-09-14 12:45:02 +00:00