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:[email protected]> 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/ _______________________________________________ Stackless mailing list [email protected] http://www.stackless.com/mailman/listinfo/stackless
