# Couple of Questions

Ron Stanions (chaeon@roc.clawpaw.com)
Mon, 19 Feb 1996 15:32:17 PST

- Messages sorted by:[ date ][ thread ][ subject ][ author ]

    Your question is somewhat confusing, but as far as I can tell you're =
    saying you have a routine that calls x:regen() and x:action() in all the =
    children of $15711 once a minute for 20 minutes, and that x:action() =
    also performs some time-delay operation with a suspend(someseconds) =
    itself, correct?

    Given:

    #15711:call_regen()                      this:action()
    for x in [1..20]                               for x in [1..20]
      for y in (children(#15711))             do something...
        y:regen();                                     suspend(60);
        y:action();                                 endfor
      endfor
      suspend(60);
    endfor

    In this example, this:action() won't return control to call_regen() for =
    20 minutes, because all of this is done without forking, in which case =
    it is processed linearly, so x:regen() and y:regen() ends up getting =
    called once every 21 minutes, and the whole process takes 420 minutes.

    However, if you do this:

    #15711:call_regen()                      this:action()
    for x in [1..20]                               for x in [1..20]
      for y in (children(#15711))             ...do something...
        fork (0)                                        suspend(60);
          y:regen();                                endfor =20
          y:action();
        endfork
        suspend(60);
    endfor

    Then :call_regen() forks a seperate task which goes off and calls =
    y:regen() and y:action(), then goes to sleep for a minute, before doing =
    it again.  Meanwhile this:action() is going to take 20 minutes to do its =
    work, so the next loop through call_regen() is going to spawn /another/ =
    call to this:action(), so now you have two copies of  this:action() =
    running, on the 3rd pass you may have 3 actions (all depending on how =
    long this:action() suspend()'s.)

    So if this:action() is doing something that takes less than a minute =
    this second method is probably going to work just fine for you, but if =
    it's going to take longer than a minute you may want to introduce some =
    flags into the routines to decide whether or not to fork the task based =
    on whether a copy of it is already running or not.=20

    ----------
    From:  Muddy Waters[SMTP:muddy@emi.net]
    Sent:  Monday, February 19, 1996 5:17 PM
    To:  moo-cows.PARC@xerox.com
    Subject:  Couple of Questions

    Hello,

    I have been saving up a couple of questions that I just can't seem to =
    answer
    on my own.

    Okay, first one:

    I have a verb that looks roughly like this....

    @verb #15711:call_regen()

    rooms =3D children(#15711);
    timer =3D 20;
    while (timer > 0)
      for x in (rooms)
        x:regen();
        x:action();
      endfor
      suspend(60);
      timer =3D timer + 1;
    endwhile

    It does what I want it to with regen() (which is call the verb regen() =
    and
    action() in every room that is a child of #15711 every minute for 20
    minutes) But for action() it doesn't.  action() is very similar to the =
    above
    verb in that is has the same while statements to cause a timer affect.  =
    So,
    if action() takes a while and uses suspend() also, it messes up the =
    timing
    of call_regen().  Any way to prevent this?

    Okay, Second one:

    This may be more of a Linux question, but in relation to MOOs (I think). =
     I
    am attempting to install the Slackware version of Linux on my pentium
    100mhz, 16RAM machine.  I want to eventually get a MOO up and running on =
    it.
    I belive I can accomplish these goals, but...I want to allow others to
    access it as well.  I only have a PPP account that I would only be able =
    to
    use on nights and weekends.  I have heard of programs that will 'listen' =
    on
    other ports and direct connections to the current ip address that is set =
    up
    everytime I connect with my ppp account.  Is this all I need? or is =
    there
    more? Will the MOO start up correctly not being in single user mode if =
    this
    is all I have? and where can I get what I need?

    last question, I promise 8)

    Okay, this is more of a request than a question, but if anyone knows of =
    a
    site for a small role playing MOO that lost it's site a few months ago,
    please let me know.  My db file is about 3megs so up and running and =
    with
    the server would take up 11megs of space.  Very few people log on =
    (probably
    3-4 at one time is unusual), it is more in the building stages than =
    anything
    else right now.  Contact me for more details about the theme and =
    policies.

    Thanks a lot

    Elisabeth
    Four Seasons MOO
    A role playing game &
    Internet Tutorial