[Stackless] Killing a tasklet waiting on PyChannel_Receive in C module fails

Chris Jacobson mainecoon at gmail.com
Thu Feb 26 07:39:33 CET 2009


Thank you for that very thorough answer!  I'll stay away from the _nr.
 Understanding the return of NULL from the regular versions of the
functions, and how to handle it for tasklet death, covers what I need
already.

- Chris

On Wed, Feb 25, 2009 at 2:11 PM, Christian Tismer <tismer at stackless.com> wrote:
> 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,
> yourself.
>
> 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 mailing list