Couple of Questions

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


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