[Stackless] how to check for C stack?
tismer at stackless.com
Mon Feb 23 14:19:06 CET 2004
Giovanni Bajo wrote:
> before, there was a tasklet.frame.cstack. How do I check for it now? I'm trying
> to emit a sensible error message when pickling a tasklet which can't possibly
> be continued after unpickling.
The tasklet.frame.cstack object has vanished, resp. it was
moved into tasklet.cstate. But this doesn't help, since
all tasklets have a cstate now, which might be trivial
or not. This is handled internally.
The crucial criterion for being able to revive a pickled
tasklet is whether it has a zero nesting_level, which counts
the number of "interpreters" or other calls into C below the
top-level. The criterion is that nesting_level has to be zero.
Although the nesting level is stored inside the cstate
structure, it is available though the tasklet object.
So, testing for "t.nesting_level == 0" gives you a safe criterion
whether the unpickle will be runnable.
I agree this should better be available via an extra property.
If you can give me a reasonable name for that property, I'm
happy to add it.
Maybe "clonable"? Bad, since we can clone but not run. Hmm.
thanks for input -- ciao - chris
Christian Tismer :^) <mailto:tismer at stackless.com>
Mission Impossible 5oftware : Have a break! Take a ride on Python's
Johannes-Niemeyer-Weg 9a : *Starship* http://starship.python.net/
14109 Berlin : PGP key -> http://wwwkeys.pgp.net/
work +49 30 89 09 53 34 home +49 30 802 86 56 mobile +49 173 24 18 776
PGP 0x57F3BF04 9064 F4E1 D754 C2FF 1619 305B C09C 5A3B 57F3 BF04
whom do you want to sponsor today? http://www.stackless.com/
Stackless mailing list
Stackless at stackless.com
More information about the Stackless