[Stackless] Killing a tasklet waiting on PyChannel_Receive in C module fails
tismer at stackless.com
Wed Feb 25 23:11:40 CET 2009
On 2/23/09 10:53 PM, Chris Jacobson wrote:
> That does bring me to a question that came up as I looked through it:
> when are the appropriate situations for using the _nr functions?
The _nr versions of functions are most efficient, but also
most difficult to support.
Every code that tries to run a _nr (non-recursive) function
must be aware of the ternary return-logic:
Normal PyObject - as usual
NULL plus exception set - as usual
Py_UnwindToken - very special.
In case of a Py_UnwindToken as the return value, you *have to*
finish your function right now and to return the Py_UnwindToken,
This implements the collaborative context switching without C stack
mangling and is the fastest known way. It is also mandatory
if you want to support pickling: Your function must leave the C stack.
These things have never been used for anything else than building
the internal framework of tasklets and channels, and there is no
support or documentation planned for it.
Writing code like this is what Stackless wants to take away from
you, instead of supporting it in an API.
If you want to play, look into the source how unwinding is handled.
But you can't expect support on this from the list or myself.
cheers - chris
Christian Tismer :^) <mailto:tismer at stackless.com>
tismerysoft GmbH : 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 802 86 56 mobile +49 173 24 18 776 fax +49 30 80 90 57 05
PGP 0x57F3BF04 9064 F4E1 D754 C2FF 1619 305B C09C 5A3B 57F3 BF04
whom do you want to sponsor today? http://www.stackless.com/
More information about the Stackless