Commit Graph

8 Commits

Author SHA1 Message Date
sperber ad18648afa Fix some problems with WAIT-FOR-CHANNELS:
- Initialize READY-{READ,WRITE}-CHANNELS to () instead of #f, because
  the #f's don't get overwritten when the whole thing is interrupted.
- Fix the cleanup code which was conditionalized the wrong way.
2003-01-17 13:30:26 +00:00
sperber 3a1439a16e Remove warning message "Warning: dropping ignored channel i/o result"
because it can be legitimately triggered by WAIT-FOR-CHANNELS.
2002-12-11 12:40:29 +00:00
sperber 6fc80dfb4b Fix typo: remove double application of MAKE-I/O-COMPLETION-HANDLER. 2002-11-12 13:13:02 +00:00
mainzelm 5cb76fd27b Replace call to channel-has-waiter? by channel-check-waiter. 2002-09-17 21:22:41 +00:00
sperber 33c14d7901 First stab at implementing SELECT/SELECT!:
- extend the VM interrupts to distinguish between read and write
  events
- add new ADD-PENDING-CHANNEL instruction to the VM
- add WAIT-FOR-CHANNELS procedure to the run-time system
- implement SELECT and SELECT! on top of that in newports.scm

This runs some basic tests, but in general should be considered
largely untested.

Moreover, SELECT/SELECT! never detect any exceptional conditions---the
returned vectors are always empty.  This is because the VM doesn't
really track those, and it's unclear whether it would be worth the
effort.
2002-08-20 14:03:01 +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
marting 4e935c24a5 just a snapshot 1999-09-23 14:36:25 +00:00
marting 606245fc41 *** empty log message *** 1999-09-14 12:45:02 +00:00