Howdy Bart, I like the spirit of this branch. I think what you are trying to do should be possible.
It used to be the case that successively created new interps had to have the first ever created interp as a parent, but I believe whiteknight++ removed that restriction recently. Some docs might still indicate otherwise. I did something similar to what you are doing in PL/Parrot, but I only created 2 interps and never had them running at the same time, nor was I using the scheduler, so I didn't run into these issues. Also, while adding the the function Parrot_interp_get_scheduler seems cleaner, we may want to make that a macro if it incurs a large performance hit. I hope this helps a bit. Please feel free to barrage us with more questions. Duke On Sun, Aug 5, 2012 at 2:27 AM, Bart Wiegmans <[email protected]> wrote: > Hi everybody! > > Once again, working on mod_parrot, I noticed a bit of an issue with > parrot. But I can't really get to how to resolve it, so I'm asking > your advice. > > The context: I want to run multiple interpreters in the same program, > at the same time, running different programs. This is a requirement > because otherwise, mod_parrot can only run in the prefork apache mpm, > which uses a relatively large amount of memory and other resources and > for this reason is not very popular with web hosters. Thus, without > running in a multi-threaded enviroment, mod_parrot is nearly useless. > > This is not as simple as it seems, because of the following: > * having two separate interpreters at the same time is apparantly not > very ok, unless they are parent and child (no idea why) > * but if a child is instantiated it does not get a scheduler of its > own (Parrot_cx_init_scheduler) > * which causes it to crash when starting execution because > interp->scheduler is 0x0 (literally everywhere in src/scheduler.c) > > Thus, I created a new function in src/interp/api.c, called > Parrot_interp_get_scheduler, and combed through the code to replace > direct access of the scheduler with this delegated access. However, > considering the amount of places that it was directly accessed, and > seeing the behavior of it, I'm actually doubting whether it is a good > idea. I in fact doubt whether having multiple interpreters is a good > idea at all given the current state of things. For this reason I'm not > placing a pull request right now, but I do ask you to review the > changes in the branch, please see > https://github.com/bdw/parrot/tree/find-root-scheduler . > > Kind regards, > Bart Wiegmans > _______________________________________________ > http://lists.parrot.org/mailman/listinfo/parrot-dev -- Jonathan "Duke" Leto <[email protected]> Leto Labs LLC http://labs.leto.net 209.691.DUKE http://dukeleto.pl _______________________________________________ http://lists.parrot.org/mailman/listinfo/parrot-dev
