1998Q1/
<!-- MHonArc v2.4.4 -->
<!--X-Subject: World Persistence, flat files v/s DB v/s ?? -->
<!--X-From-R13: f001tzhNabin.jevtug.rqh -->
<!--X-Date: Mon, 23 Mar 1998 19:51:40 +0000 -->
<!--X-Message-Id: Pine.PMDF.3.95.980323144315.543526539A&#45;100000#nova,wright.edu -->
<!--X-Content-Type: text/plain -->
<!--X-Reference: Pine.LNX.3.96.980322191104.1367A&#45;100000#mpc,dyn.ml.org -->
<!--X-Head-End-->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<html>
<head>
<title>MUD-Dev message, World Persistence, flat files v/s DB v/s ??</title>
<!-- meta name="robots" content="noindex,nofollow" -->
<link rev="made" href="mailto:s001gmu#nova,wright.edu">
</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>
[&nbsp;<a href="../">Other Periods</a>
&nbsp;|&nbsp;<a href="../../">Other mailing lists</a>
&nbsp;|&nbsp;<a href="/search.php3">Search</a>
&nbsp;]
<br clear=all><hr>
<!--X-Body-Begin-->
<!--X-User-Header-->
<!--X-User-Header-End-->
<!--X-TopPNI-->

Date:&nbsp;
[&nbsp;<a href="msg00853.html">Previous</a>
&nbsp;|&nbsp;<a href="msg00854.html">Next</a>
&nbsp;]
&nbsp;&nbsp;&nbsp;&nbsp;
Thread:&nbsp;
[&nbsp;<a href="msg00823.html">Previous</a>
&nbsp;|&nbsp;<a href="msg00884.html">Next</a>
&nbsp;]
&nbsp;&nbsp;&nbsp;&nbsp;
Index:&nbsp;
[&nbsp;<A HREF="author.html#00852">Author</A>
&nbsp;|&nbsp;<A HREF="#00852">Date</A>
&nbsp;|&nbsp;<A HREF="thread.html#00852">Thread</A>
&nbsp;]

<!--X-TopPNI-End-->
<!--X-MsgBody-->
<!--X-Subject-Header-Begin-->
<H1>World Persistence, flat files v/s DB v/s ??</H1>
<HR>
<!--X-Subject-Header-End-->
<!--X-Head-of-Message-->
<UL>
<LI><em>To</em>: <A HREF="mailto:mud-dev#null,net">mud-dev#null,net</A></LI>
<LI><em>Subject</em>: World Persistence, flat files v/s DB v/s ??</LI>
<LI><em>From</em>: <A HREF="mailto:s001gmu#nova,wright.edu">s001gmu#nova,wright.edu</A></LI>
<LI><em>Date</em>: Mon, 23 Mar 1998 14:51:49 -0500 (EST)</LI>
</UL>
<!--X-Head-of-Message-End-->
<!--X-Head-Body-Sep-Begin-->
<HR>
<!--X-Head-Body-Sep-End-->
<!--X-Body-of-Message-->
<PRE>


On Sun, 22 Mar 1998, Matt Chatterley wrote:

&gt; On Sun, 22 Mar 1998, Chris Gray wrote:
&gt; &gt; [Ben Greear:]
&gt; 
&gt; [Snip]
&gt; 
&gt; &gt; :Also, as a java server, I don't think I can do a select on incomming
&gt; &gt; :data.	I think a thread for every player is a bit much...any suggestions
&gt; &gt; :here?
&gt; &gt; 
&gt; &gt; I have just started into the socket programming stuff of the current Java
&gt; &gt; book I'm reading, but I just went and did some scanning. The technique
&gt; &gt; he suggests for a server is to create some fixed number of threads, and
&gt; &gt; re-use those threads throughout the lifetime of the server. He says that
&gt; &gt; some Java implementations do not garbage collect threads at all, so having
&gt; &gt; one per connection can result in an eventual crash due to lack of memory.
&gt; &gt; Ick. Given the lack of a 'select' or 'poll' method in Java, the choices
&gt; &gt; are quite limited. Double ick.

[...]
 
&gt; Reusing threads is probably desirable, by the way, especially if less work
&gt; will be done to re-use an existant thread than to create a new one, and
&gt; not hard to do.

As I understand it, it is usualy a LOT less work to reuse a thread that to
destroy/create a new one.
 
&gt; Consider a model where you have a resizeable array (see the Vector class)
&gt; of Threads. You also maintain a list of available threads so you do not
&gt; have to recalulate it, and follow a procedure akin to:
&gt; 
&gt; New connection is made to the server:
&gt; 	Check list of available threads.
&gt; 		If null: extend the Vector and add a new thread to handle the
&gt; 			connection.
&gt; 		If not null: take the 'top' thread and re-assign it.
&gt; 
&gt; A connection closes:
&gt; 	Add that thread to the list of available threads.
&gt; 	Suspend and 'reset' the thread.
&gt; 
&gt; Seems interesting anyway. :)

This is very similar to a discussion we had about multi-threading event
drivers.  You might also consider, to reduce the number of creates and/or
unused threads at the end of your array, a pool approach, with a min/max
available setting.  Something like so:

You create the pool (array, call it what you will), with min/max avail set
to 2/5.  It starts with 5 avail (all unused).  One person connects.  no
problem.  Then 3 more connect.  Now we have 4 in use, 1 avail, so the pool
adds a new thread, taking the total count up to 6, 4 in use, 2 avail.
lets say everyone then logs out.  The pool has 6 avail, so it deletes
one, to maintain the max avail at 5. This scheme works well, as long as
you don't change the number of threads in use too radically.  Constant,
radical changes in number will prolly just add overhead to a simpler
scheme, but as long as it fluctuates within the range you specify, it
shan't create or destroy any threads.

I liked the model, but haven't adopted it for my event driver.  I want to
run some tests with a static pool first, and see if I really do need a
dynamic pool.

-Greg


</PRE>

<!--X-Body-of-Message-End-->
<!--X-MsgBody-End-->
<!--X-Follow-Ups-->
<HR>
<ul compact><li><strong>Follow-Ups</strong>:
<ul>
<li><strong><A NAME="00884" HREF="msg00884.html">Re: [MUD-Dev]  World Persistence, flat files v/s DB v/s ??</A></strong>
<ul compact><li><em>From:</em> Vadim Tkachenko &lt;vt#freehold,crocodile.org&gt;</li></ul>
</UL></LI></UL>
<!--X-Follow-Ups-End-->
<!--X-References-->
<UL><LI><STRONG>References</STRONG>:
<UL>
<LI><STRONG><A NAME="00823" HREF="msg00823.html">Re: [MUD-Dev] World Persistence, flat files v/s DB v/s ??</A></STRONG>
<UL><LI><EM>From:</EM> Matt Chatterley &lt;matt#mpc,dyn.ml.org&gt;</LI></UL></LI>
</UL></LI></UL>
<!--X-References-End-->
<!--X-BotPNI-->
<UL>
<LI>Prev by Date:
<STRONG><A HREF="msg00853.html">World Persistence, flat files v/s DB v/s ??</A></STRONG>
</LI>
<LI>Next by Date:
<STRONG><A HREF="msg00854.html">Re: [MUD-Dev] Jukebox</A></STRONG>
</LI>
<LI>Prev by thread:
<STRONG><A HREF="msg00823.html">Re: [MUD-Dev] World Persistence, flat files v/s DB v/s ??</A></STRONG>
</LI>
<LI>Next by thread:
<STRONG><A HREF="msg00884.html">Re: [MUD-Dev]  World Persistence, flat files v/s DB v/s ??</A></STRONG>
</LI>
<LI>Index(es):
<UL>
<LI><A HREF="index.html#00852"><STRONG>Date</STRONG></A></LI>
<LI><A HREF="thread.html#00852"><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] Jukebox</STRONG>, <EM>(continued)</EM>
<ul compact>
<ul compact>
<LI><strong><A NAME="00868" HREF="msg00868.html">Re: [MUD-Dev] Jukebox</A></strong>, 
Vadim Tkachenko <a href="mailto:vt#freehold,crocodile.org">vt#freehold,crocodile.org</a>, Tue 24 Mar 1998, 03:25 GMT
</LI>
</ul>
</ul>
</LI>
<LI><strong><A NAME="00819" HREF="msg00819.html">Re: [MUD-Dev]	World Persistence, flat files v/s DB v/s ??</A></strong>, 
Chris Gray <a href="mailto:cg#ami-cg,GraySage.Edmonton.AB.CA">cg#ami-cg,GraySage.Edmonton.AB.CA</a>, Sun 22 Mar 1998, 18:21 GMT
<UL>
<LI><strong><A NAME="00822" HREF="msg00822.html">Re: [MUD-Dev] World Persistence, flat files v/s DB v/s ??</A></strong>, 
Greg Munt <a href="mailto:greg#uni-corn,demon.co.uk">greg#uni-corn,demon.co.uk</a>, Sun 22 Mar 1998, 19:02 GMT
</LI>
<LI><strong><A NAME="00823" HREF="msg00823.html">Re: [MUD-Dev] World Persistence, flat files v/s DB v/s ??</A></strong>, 
Matt Chatterley <a href="mailto:matt#mpc,dyn.ml.org">matt#mpc,dyn.ml.org</a>, Sun 22 Mar 1998, 19:19 GMT
<UL>
<LI><strong><A NAME="00852" HREF="msg00852.html">World Persistence, flat files v/s DB v/s ??</A></strong>, 
s001gmu <a href="mailto:s001gmu#nova,wright.edu">s001gmu#nova,wright.edu</a>, Mon 23 Mar 1998, 19:51 GMT
<UL>
<LI><strong><A NAME="00884" HREF="msg00884.html">Re: [MUD-Dev]  World Persistence, flat files v/s DB v/s ??</A></strong>, 
Vadim Tkachenko <a href="mailto:vt#freehold,crocodile.org">vt#freehold,crocodile.org</a>, Wed 25 Mar 1998, 05:23 GMT
</LI>
</UL>
</LI>
<LI><strong><A NAME="00885" HREF="msg00885.html">Re: [MUD-Dev] World Persistence, flat files v/s DB v/s ??</A></strong>, 
Vadim Tkachenko <a href="mailto:vt#freehold,crocodile.org">vt#freehold,crocodile.org</a>, Wed 25 Mar 1998, 05:26 GMT
<UL>
<LI><strong><A NAME="00894" HREF="msg00894.html">Re: [MUD-Dev] World Persistence, flat files v/s DB v/s ??</A></strong>, 
Matt Chatterley <a href="mailto:matt#mpc,dyn.ml.org">matt#mpc,dyn.ml.org</a>, Wed 25 Mar 1998, 08:47 GMT
<UL>
<LI><strong><A NAME="00899" HREF="msg00899.html">Re: [MUD-Dev] World Persistence, flat files v/s DB v/s ??</A></strong>, 
Vadim Tkachenko <a href="mailto:vt#freehold,crocodile.org">vt#freehold,crocodile.org</a>, Thu 26 Mar 1998, 01:59 GMT
</LI>
</UL>
</LI>
</UL>
</LI>
</UL>
</LI>
</UL>
</LI>
</UL></BLOCKQUOTE>

</ul>
<hr>
<center>
[&nbsp;<a href="../">Other Periods</a>
&nbsp;|&nbsp;<a href="../../">Other mailing lists</a>
&nbsp;|&nbsp;<a href="/search.php3">Search</a>
&nbsp;]
</center>
<hr>
</body>
</html>