[Python-ideas] Cofunctions - Back to Basics
Nick Coghlan
ncoghlan at gmail.com
Sun Oct 30 22:49:12 CET 2011
On Mon, Oct 31, 2011 at 7:16 AM, Greg Ewing <greg.ewing at canterbury.ac.nz> wrote:
> Nick Coghlan wrote:
>
>> The fact that greenlets exists (and works) demonstrates that it is
>> possible to correctly manage and execute multiple Python stacks within
>> a single OS thread.
>
> I'm not convinced that greenlets work correctly under all
> possible circumstances. As I understand, they work by copying
> pieces of C stack in and out when switching tasks. That
> fails if a pointer to local storage is kept anywhere that
> can be reached by a different task. I seem to remember there
> being an issue with Tk doing something like this and causing
> problems for Stackless.
Yeah, that sentence should have had a "mostly" inside the parentheses :)
However, I think it may be more fruitful to pursue an approach that
uses greenlets as the foundation, and works to close the loopholes
(e.g. by figuring out a way for C code to mark itself as "coroutine
safe" and assuming it is not safe by default) rather than trying to
figure out how to make a "generators all the way down" approach handle
invocation of arbitrary slots.
Cheers,
Nick.
--
Nick Coghlan | ncoghlan at gmail.com | Brisbane, Australia
More information about the Python-ideas
mailing list