[Stackless] Re: [Python-Dev] Stackless Design Q.
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®