[Stackless] Event-based scheduling
tim at metaweb.com
Wed Feb 13 23:26:25 CET 2008
On Feb 13, 2008, at 1:05 PM, Laurent Debacker wrote:
> I don't understand why the implementation forces me to use channels,
> if I do not need to 'transfer' data. You use the channel as a
> semaphore. I would think that it is better to implement semaphore,
> and then implement channels based on semaphores.
I think you're getting confused by the name. After
using it a bit, I now think of a stackless "channel"
as a synchronization primitive that happens to offer
some basic data transfer support.
If you examine the implementation, you'll see that
the data transfer support is very nearly free, so a
two-layer implementation as you suggest would really
be a waste of effort.
If you don't need data transfer, just ignore that
part of the channel interface (pass None, ignore the
return value). Treating a channel as a semaphore is
a completely reasonable thing to do, since that's
essentially what it is.
More information about the Stackless