[Stackless] Scheduling Examples, Problems, Solutions, and Questions

Ásgeir Bjarni Ingvarsson istari at hlekkir.com
Wed Dec 14 21:38:50 CET 2005

> Yes, this is a cycle! Now all the deadlocking
> conditions
> are there.
> However what confuses me is the following:
> 1) B is blocked waiting for E to be ready to read.
> 2) C is blocked waiting for E to read.
> Why doesn't the scheduler detect that E is able to
> read
> on channel CtoE and BtoE, hence waking up B and C?
> This is
> what troubles me.

Well as I understand it, E has only announced it's intetion
to read on CtoE and is blocked before it can call receive on BtoE.
Therefore the scheduler has no knowledge of E's intent to read on BtoE.

Also, it seems to me that C is waiting for B not E
   E is trying to read from C
   B is trying to write to E
   C is trying to read from B

Now if B would write to C instead I think that it could break out
of the cycle.
This is what I mean when I talk about the order of the joins.

Stackless mailing list
Stackless at stackless.com

More information about the Stackless mailing list