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/



Reply via email to