[Stackless] Re: [Python-Dev] Stackless Design Q. (original) (raw)

Jeff Senn senn@maya.com
Wed, 20 Feb 2002 11:00:37 -0500


Greg Ewing <greg@cosc.canterbury.ac.nz> writes:

It's not clear exactly what you're after here. Are you trying to define the lowest-level interface upon which everything else will be built? If so, I think what you have presented is FAR too complex.

It seems to me you need only two things: ... t = tasklet(f) t.transfer()

(Sorry if I missed something -- I've been way busy lately and haven't been giving this much attention -- that said...)

But (if I understand the current plan) we will need mechanisms internal to the Python interpreter to transfer values and maintain blocked/running state anyway; since when you generate a tasklet and run it:

t = tasklet(f) t.transfer()

That may cause many more tasklets to be generated, run, and destroyed that you don't ever see ... recursions/function calls in f, and only-Christian-knows what else... so the transfer value mechanism might as well be built in.

I haven't thought enough about the "unamed produce-and-continue function" to decide how exactly it should work.

I have two concerns in implementing uthreads this way (scheduler in C):

1 -- there doesn't seem to be anyway to "kill" a tasklet 2 -- the scheduling algorithm will be hard to tune (we'll probably at least need tasklet priority...) Maybe there should still be a "timeslice" function so an in-Python scheduler can be written?

-- -Jas -------------------- www.maya.com Jeff Senn | / / |-/ \ / /|� Chief Technologist | /|/| |/ o | /-| Head of R&D | Taming Complexity�