[Home] [Groups] - Message: [Prev in Group] [Next in Group]
10031: Re: [MUD-Dev] Sockets
[Full Header] [Plain Text]
From: "Jon A. Lambert" <jlsysinc@ix.netcom.com>
Newsgroups: nu.kanga.list.mud-dev
Date: Mon, 3 May 1999 22:46:59 -5
References: [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] <-newest
Organization: Kanga.Nu
On 22 Apr 99,, Jo Dillon wrote:
> Quzah [softhome] (quzah@softhome.net) spake thusly:
> > What is the main difference between and benifit of using:
> >
> > (1) asynchronous notification
> > <versus>
> > (2) versus non-blocking
> > <versus>
> > (3) using select
>
> Actually, there is a (4) - blocking i/o within threads. This is good
> for very complex interactions with a client (since you don't need a state
> machine or anything icky like that) but has portability and scalability
> problems (worse than select()? I'd be interested to know, at least as
> regards Linux...) It's also quite hard to write a reliable threaded
> program since problems can be non-reproducible.
>
There is also (5) Overlapped I/O which is only available on NT 4.0 or higher
and a bit difficult to program. It's conceptually similar to readv() and
writev() on BSD. Asynchronous sockets are available also on all windows
platforms, and are the easiest to program and most code readable. But they
have a bit higher overhead because they must use windowed messaging. They are
the only alternative to non-blocking on Win16 but I don't suppose anyone's
interested in that. ;)
Option 4 that Jo gave above is highly preferred over non-blocking sockets on
Win32 servers. They really "should" be the preferable performance choice on
Unix/BSD systems also. I don't know why more muds aren't using them. I know
it's pretty much standard fare for the better FTP and HTTP servers.
Ranking the options from best to worst from a performance standpoint
(Note- Win32 only):
1. Overlapped I/O
2. Blocking - w/threads
3. Asynchronous sockets
4. Non-blocking
5. Blocking - w/o threads
And ranking them by easiest to program and understand:
1. Blocking - w/o threads
2. Asynchronous
3. Non-blocking
4. Blocking - w/threads
5. Overlapped I/O
FYI ... YMMV. ;)
--
--* Jon A. Lambert - TychoMUD Email:jlsysinc@.ix.netcom.com *--
--* Mud Server Developer's Page <http://pw1.netcom.com/~jlsysinc> *--
--* I am the Dragon of Grindly Grund, but my lunches aren't very much fun, *--
--* For I like my damsels medium rare, And they always come out well done. *--
_______________________________________________
MUD-Dev maillist - MUD-Dev@kanga.nu
http://www.kanga.nu/lists/listinfo/mud-dev