Bradley Brahms <[EMAIL PROTECTED]> writes: >Here is an update where I am in testing right now. > >Having noted that using one_event() does not cause a memory growth problem I >thought I would change Event.xs to make loop() be a while(1) loop calling >safe_one_event(). The purpose of the test was to see if that would solve the >growth problem. It would not be a solution in and of itself. > >In Event.xs, I change _loop() to: > > PROTOTYPE: ;$ > CODE: > double maxtm = 60; > if (items == 1) maxtm = SvNV(ST(0));
What frees the maxtm SV ? > while (1) { safe_one_event(maxtm);} > OUTPUT: > >I thought this would be the Event.pm equivalent of doing one_event() inside >a while loop in a perl script. > >I was wrong! There is still growth problems! Now I am really confused! Why >doesn't this behave the same as a script based?: > > while (1) { > Event::one_event(1); > } I had a quick look at code yesterday and could not see anything obvious. > >One work around to the growth problem is to have a timer do an unloop() and >then wrap Event::loop() in a while(1) loop. I've done this with a timer >interval of 5 seconds and the growth seems to end. While not an answer, it >is a way to work with the current Event.pm/perl problem and solve the growth >problem with minimal pain. Depending on the application a larger interval >could also be used. > >To do this, one would add the following to their script: > > Event->timer(interval => 5, cb => sub{unloop;}); > >then change their Event::loop; line to > while (1) { > Event::loop; > } > >Brad -- Nick Ing-Simmons http://www.ni-s.u-net.com/