Subject: nonpreemptiveness

From: Lincoln Myers <[email-masked]>
Date: Mon, 22 Feb 1993 14:46:07 -0800

[email-masked] (Jeff Prothero) says:
> Shades of MacOS!  ...  Seems like every new software environment has to
> repeat this particular bit of history.  Any ETA estimate for a fix?

I can certainly agree with that view with respect to operating systems.
Having all other programs stop when you're selecting from a menu in MS
Windows makes it hard to make programs with significant external
constraints.  (e.g.  music players, communication programs, ...)

However, in a mud where these requirements are few and there are many shared
resources (e.g. all properties), having actions be non-preemptive seems a
good choice, since too-long-running verbs can be tolerated or fixed better
than deadlocking-verbs can, I would think.

TinyMUSE (and probably all TinyMUDs) does something similar to what Lambda
does, but the only way to loop or call verbs or otherwise call many commands
repeatedly is with @trigger or @wait, which add new commands to the end of
the queue, thereby acting sorta like suspend().  Thus I don't find Lambda's
non-preemptive system to be unusual.

CoolMUD is the only mud that I know of that has lock/unlock, and that's
because it's made to run on distributed systems.  It deals with protection
and mutual exclusion by having properties only readable by the object in
question--others have to use the object's verbs to get/set.  Naturally the
maker of the object must still be careful.

Lincoln