Tue Nov 28 18:21:40 EST 2006
in order to complete the scheduler, a task needs to specify what it's
actually waiting for. there are 4 cases
INPUT if iq
OUTPUT of oq
where a FILE is an OS event, and a QUEUE is an internal task
communication mechanism (that can be added later). these best behave
in a similar manner, so inter-task communication and inter-process
communication behaves the same. (an internal queue is just a listvar:
pointer to a list/queue) blocking events are handled by placing the
task + the stream/listvar in a wait list.
i currently have 2 points:
of -> calls schedule word explicitly (which returns e_yield)
if -> primitive returns e_yield
going to have a look at graham's "on lisp". it has a chapter about
this stuff, which i skimmed over when i read it.
ok.. no reading, just thinking.
it seems to work now. still need to test a bit.