<!-- MHonArc v2.4.4 --> <!--X-Subject: Re: Multi-threaded mudding (was a flamefest) --> <!--X-From-R13: "Xba O. Znzoreg" <wyflfvapNvk.argpbz.pbz> --> <!--X-Date: from fabius.globecomm.net [207.51.48.6] by mx01.ca.us.ibm.net id 862518920.196530-1 Thu May 1 20:35:20 1997 --> <!--X-Message-Id: 199705012035.PAA01028@dfw-ix2.ix.netcom.com --> <!--X-Content-Type: text/plain --> <!--X-Head-End--> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN"> <html> <head> <title>MUD-Dev message, Re: Multi-threaded mudding (was a flamefest)</title> <!-- meta name="robots" content="noindex,nofollow" --> <link rev="made" href="mailto:jlsysinc#ix,netcom.com"> </head> <body background="/backgrounds/paperback.gif" bgcolor="#ffffff" text="#000000" link="#0000FF" alink="#FF0000" vlink="#006000"> <font size="+4" color="#804040"> <strong><em>MUD-Dev<br>mailing list archive</em></strong> </font> <br> [ <a href="../">Other Periods</a> | <a href="../../">Other mailing lists</a> | <a href="/search.php3">Search</a> ] <br clear=all><hr> <!--X-Body-Begin--> <!--X-User-Header--> <!--X-User-Header-End--> <!--X-TopPNI--> Date: [ <a href="msg00302.html">Previous</a> | <a href="msg00304.html">Next</a> ] Thread: [ <a href="msg00339.html">Previous</a> | <a href="msg00302.html">Next</a> ] Index: [ <A HREF="author.html#00303">Author</A> | <A HREF="#00303">Date</A> | <A HREF="thread.html#00303">Thread</A> ] <!--X-TopPNI-End--> <!--X-MsgBody--> <!--X-Subject-Header-Begin--> <H1>Re: Multi-threaded mudding (was a flamefest)</H1> <HR> <!--X-Subject-Header-End--> <!--X-Head-of-Message--> <UL> <LI><em>To</em>: "MUD Design List" <<A HREF="mailto:mud-dev#null,net">mud-dev#null,net</A>></LI> <LI><em>Subject</em>: Re: Multi-threaded mudding (was a flamefest)</LI> <LI><em>From</em>: "Jon A. Lambert" <<A HREF="mailto:jlsysinc#ix,netcom.com">jlsysinc#ix,netcom.com</A>></LI> <LI><em>Date</em>: Thu, 1 May 1997 16:38:29 -0400</LI> </UL> <!--X-Head-of-Message-End--> <!--X-Head-Body-Sep-Begin--> <HR> <!--X-Head-Body-Sep-End--> <!--X-Body-of-Message--> <PRE> <By request, a x-post of mine from rgma > :Flamebits and some minor editing done :-) Event Modeling: * An event is something that happens at a point in time. * An event has no duration. * Two events may be said to precede or follow another or may be unrelated. * Those that are unrelated are said to be concurrent. * An event is a one way transmission of information from one object/subsystem to another object/subsystem. * It is not like a subroutine, thus there is no return. An object/subsystem may expect a reply, but this reply would be in the form of an event under control of the second object/subsystem. * Objects/subsystems are considered to be concurrent. Event-driven systems: * Control resides within a dispatcher/monitor provided by the language/subsystem/OS. * Procedures are attached to events and are called by the dispatcher when the event occurs. * All event procedures return control to the dispatcher. They never retain control. * Program state cannot be preserved using the program counter and stack because procedures return control to the dispatcher. * Procedures must use global variables to maintain state or the dispatcher must maintain local state for them. * Event-driven systems simulate cooperating processes within a single multi-threaded task. (multi-threading can also be simulated within the dispatcher/monitor BTW) * A good example of such a system would be Sun View. Concurrent Systems: * Control resides in several independent objects/subsystems. * Events are implemented directly as one-way messages. * A task can wait for input, but other tasks continue execution. * The operating system "usually" provides the queuing mechanism. * Unix is a concurrent system. Ada supports concurrent tasking. Procedure-driven Systems: * Control resides within the procedural code. * Procedures issue requests for input and then wait for it. When input arrives control resumes within the procedure that made the request. * An operation corresponds to a pair of events. An input event and an output event. {Usually implemented with call (values,...) and return (values,...) } * Gadzillions of programs are like this. Many systems have subsystems which exhibit one or more of the above. Some (P)ros and (C)ons- Procedural Systems P - very easy to implement with conventional languages C - requires concurrency inherent in objects to be mapped into a sequential flow of control. C - asynchronous input cannot be easily accommodated. C - flexible user-interfaces are hard to build. Event Systems C - more difficult to implement with standard languages. P - more modular and handle error conditions better. C - an errant procedure can block the entire application so good design is critical. P - flexible control patterns can be simulated. Concurrent Systems P - C - Any thoughts about these? I have just started exploring the area. I believe whether you use OS-supplied threading or your application simulates threading makes no difference. I do believe that is essential to at least simulate this your mud world to be considered "event-driven". Second thoughts about above: Your platform largely determines what you should use, speed is likely an issue. Is this important to modeling a virtual world? I believe it is an important concept that will allow muds to evolve in areas they haven't before. Areas like AI, genetic, political, and economic systems, better user interfaces, and more. Sure many imps can say "been there, done that". But have you really "done it" or simply forced it to fit within the "flatness" of a sequential model. Note: Much of this was freely quoted from Blaha, Booch, Rumbaugh and Gane (and likely mangled by me). Any additions/corrections/clarifications are welcome. A interesting doubt crosses my mine. Should I be using ADA or something similar? JL Some are born to sweet delight, some are born to endless night </PRE> <!--X-Body-of-Message-End--> <!--X-MsgBody-End--> <!--X-Follow-Ups--> <HR> <!--X-Follow-Ups-End--> <!--X-References--> <!--X-References-End--> <!--X-BotPNI--> <UL> <LI>Prev by Date: <STRONG><A HREF="msg00302.html">parsing</A></STRONG> </LI> <LI>Next by Date: <STRONG><A HREF="msg00304.html">Re: [MUD-Dev] Re: Multi-threaded mudding (was a flamefest)</A></STRONG> </LI> <LI>Prev by thread: <STRONG><A HREF="msg00339.html">Re: [MUD-Dev] Re: Multi-threaded mudding (was a flamefest)</A></STRONG> </LI> <LI>Next by thread: <STRONG><A HREF="msg00302.html">parsing</A></STRONG> </LI> <LI>Index(es): <UL> <LI><A HREF="index.html#00303"><STRONG>Date</STRONG></A></LI> <LI><A HREF="thread.html#00303"><STRONG>Thread</STRONG></A></LI> </UL> </LI> </UL> <!--X-BotPNI-End--> <!--X-User-Footer--> <!--X-User-Footer-End--> <ul><li>Thread context: <BLOCKQUOTE><UL> <LI><STRONG>Re: [MUD-Dev] Re: Multi-threaded mudding (was a flamefest)</STRONG>, <EM>(continued)</EM> <ul compact> <ul compact> <LI><strong><A NAME="00322" HREF="msg00322.html">Re: [MUD-Dev] Re: Multi-threaded mudding (was a flamefest)</A></strong>, Miroslav Silovic <a href="mailto:silovic#srce,hr">silovic#srce,hr</a>, Sun 04 May 1997, 12:45 GMT </LI> </ul> <LI><strong><A NAME="00321" HREF="msg00321.html">Re: [MUD-Dev] Re: Multi-threaded mudding (was a flamefest)</A></strong>, Jeff Kesselman <a href="mailto:jeffk#tenetwork,com">jeffk#tenetwork,com</a>, Sun 04 May 1997, 11:28 GMT </LI> <LI><strong><A NAME="00320" HREF="msg00320.html">Re: [MUD-Dev] Re: Multi-threaded mudding (was a flamefest)</A></strong>, Jeff Kesselman <a href="mailto:jeffk#tenetwork,com">jeffk#tenetwork,com</a>, Sun 04 May 1997, 11:30 GMT </LI> <LI><strong><A NAME="00339" HREF="msg00339.html">Re: [MUD-Dev] Re: Multi-threaded mudding (was a flamefest)</A></strong>, Jon A. Lambert <a href="mailto:jlsysinc#ix,netcom.com">jlsysinc#ix,netcom.com</a>, Fri 09 May 1997, 11:11 GMT </LI> </ul> </LI> <LI><strong><A NAME="00303" HREF="msg00303.html">Re: Multi-threaded mudding (was a flamefest)</A></strong>, Jon A. Lambert <a href="mailto:jlsysinc#ix,netcom.com">jlsysinc#ix,netcom.com</a>, Fri 02 May 1997, 03:35 GMT <LI><strong><A NAME="00302" HREF="msg00302.html">parsing</A></strong>, Chris Gray <a href="mailto:cg#ami-cg,GraySage.Edmonton.AB.CA">cg#ami-cg,GraySage.Edmonton.AB.CA</a>, Thu 01 May 1997, 12:56 GMT <LI><strong><A NAME="00298" HREF="msg00298.html">Re: (fwd) Re: Death in Muds -(also Birth, Imprisonment, Aging, and skill development)</A></strong>, coder <a href="mailto:coder#ibm,net">coder#ibm,net</a>, Wed 30 Apr 1997, 09:39 GMT <LI><strong><A NAME="00294" HREF="msg00294.html">Re: [MUD-Dev] Re: Combat</A></strong>, Jon A. Lambert <a href="mailto:jlsysinc#ix,netcom.com">jlsysinc#ix,netcom.com</a>, Wed 30 Apr 1997, 02:19 GMT <LI><strong><A NAME="00283" HREF="msg00283.html">Re: [MUD-Dev] Re: Combat</A></strong>, Chris Gray <a href="mailto:cg#ami-cg,GraySage.Edmonton.AB.CA">cg#ami-cg,GraySage.Edmonton.AB.CA</a>, Tue 29 Apr 1997, 21:49 GMT </UL></BLOCKQUOTE> </ul> <hr> <center> [ <a href="../">Other Periods</a> | <a href="../../">Other mailing lists</a> | <a href="/search.php3">Search</a> ] </center> <hr> </body> </html>