Hi Colleagues:
In previous posts, I talked about implementing a select in Stackless Python.
Conceptually it is not difficult. And I still think most of a select like
mechanism can and should be implemented as a module. However the more I work
with the stackless.py prototype and look at C Stackless Python, I believe I was
optimistic in the amount of changes required to C Stackless Python. The changes
are not huge, but they are not trivial either as I originally planned. I plan
to give a talk on this at the end of this month to my local Python group :-) I
still need to run benchmarks that will determine if all of this is really worth
it.
To date some of the difficulties:
1) blocked is overloaded to both indicate state and the operation - this has to
be separated.
2) What does _channel mean when a tasklet is blocked on a selector? Should it
point to a selector implementation. Should _channel become some list of
channels. What would this break?
3) Select needs the most cooperation from the channel class. The particularly
complicating case - selector is waiting for one or more receivers to rendezvous.
4) To avoid race conditions or really really complicated data structures, the
tasklet with the selector has to be scheduled immediately. This implies that
anything using a select like mechanism will run with high priority. Then again,
it is acting like a dispatcher in an event loop.
Meanwhile, I am looking at Go to see how it solves these problems.
Any thoughts?
Cheers,
Andrew
_______________________________________________
Stackless mailing list
[email protected]
http://www.stackless.com/mailman/listinfo/stackless