On 17/12/2012 03:25, Niall Douglas wrote:
I won't go into too much detail here (search this list's archives), but in short there isn't just GIL management but also interpreter management, and on top of that both of those have to work right as exception throws happen plus policies must be instituted for things like container iterators (e.g. do you release GIL each iteration, every 10 iterations etc) and policies for multiple interpreter interactions (e.g. do we timeslice interpreters, or wait for one to go to i/o sleep first?).
The code I published is agnostic about iterators and iteration--the user must explicitly decide when the GIL is to be released and reacquired. I'm sure there could be fancier ways of doing it, e.g. with tags given to BPL's class_::def() for long-running methods. But I didn't worry about that level of complexity--I think the simple solution offers benefits today, and can be expanded upon later.
Having multiple Python interpreters in one process seems fraught anyway, so I haven't really considered whether my code can (or should) support that. I hope you'll agree it is not the common case.
_______________________________________________ Cplusplus-sig mailing list Cplusplus-sig@python.org http://mail.python.org/mailman/listinfo/cplusplus-sig