From 0ea5fc66924303d1bf73ba283a383e2aadee02f2 Mon Sep 17 00:00:00 2001 From: neodarz Date: Sat, 11 Aug 2018 20:21:34 +0200 Subject: Initial commit --- pipermail/nel/2001-February/000291.html | 116 ++++++++++++++++++++++++++++++++ 1 file changed, 116 insertions(+) create mode 100644 pipermail/nel/2001-February/000291.html (limited to 'pipermail/nel/2001-February/000291.html') diff --git a/pipermail/nel/2001-February/000291.html b/pipermail/nel/2001-February/000291.html new file mode 100644 index 00000000..0a6ba1f5 --- /dev/null +++ b/pipermail/nel/2001-February/000291.html @@ -0,0 +1,116 @@ + + + + [Nel] NeL Network Engine + + + + + + +

[Nel] NeL Network Engine

+ Nicolas Hognon + cblt@cblt.org
+ Wed, 28 Feb 2001 10:57:11 +0100 +

+
+ +
+> In this case, we have to forget the solution where each
+> socket is on a thread and use a blocked receive(). The problem is that
+> select() is quite slow and if we have only 100 thread,
+> each thread needs to manage, with a select(), around 50 players and we ll
+> lost lot of time to create the array for the select()
+> and check who have wakeup the select().
+
+I encouter the same problem : one thread must manage more than one 
+socket on the server. the problem is how managing those socket
+in the thread. the problem is I want to be portable between windows
+and linux :((
+
+under windows there is many solution :
+  - select (the only one which is portable)
+  - windows event and message
+  - overlapped I/O
+
+under linux the only solution I know is :
+  - select / poll :  i'm not sure but i think the difference between
+    select and poll is that with poll you don't have to fill your array
+    before each call.
+
+another problem when a thread maange more than one socket is
+what your threads will do :
+
+a first approch is something like that :
+
+while(run)
+{
+   TestSokets();
+
+   for each socket which received something
+   do
+     read the incoming data
+     process the data
+     send data
+   done
+}
+
+but during one step of this loop your socket list must be locked
+so if a new socket need to enter this thread the calling thread will be
+blocked.
+
+a solution is to have more than one thread type.
+thread which test and read socket (perhaps wire in socket to)
+thread which to process a network message queue.
+(and perhaps thread which send network message)
+
+but it increase the number of thread so the maximum
+number of client is lesser.
+
+but i'm not really used to programming with thread yet so perhaps
+my problem are not really problems.
+
+i hope this can help and you can understand me :))
+and i think i'll take a look at http://oss.sgi.com/projects/state-threads/
+to ...
+
+good luck
+
+
+-- 
+Nicolas Hognon
+nicolash@virtools.com
+
+Virtools - The Behavior Company
+Tel. (+33) 1 42 71 46 86 / Fax. (+33) 1 42 71 86 53
+http://www.virtools.com/
+
+
+
+ + + + +
+

+ -- cgit v1.2.1