1998Q3/
<!-- MHonArc v2.4.4 -->
<!--X-Subject: [MUD&#45;Dev] Re: async i/o and threads (was: Re: lurker emerges -->
<!--X-From-R13: "Xba O. Znzoreg" <wyflfvapNvk.argpbz.pbz> -->
<!--X-Date: Mon, 10 Aug 1998 23:58:35 &#45;0700 -->
<!--X-Message-Id: 199808110658.BAA01036@dfw&#45;ix8.ix.netcom.com -->
<!--X-Content-Type: text/plain -->
<!--X-Reference: 001201bdc4de$58890340$961e5d18#default,rochester.rr.com -->
<!--X-Head-End-->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<html>
<head>
<title>MUD-Dev message, [MUD-Dev] Re: async i/o and threads (was: Re: lurker emerges</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>
[&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="msg00654.html">Previous</a>
&nbsp;|&nbsp;<a href="msg00656.html">Next</a>
&nbsp;]
&nbsp;&nbsp;&nbsp;&nbsp;
Thread:&nbsp;
[&nbsp;<a href="msg00651.html">Previous</a>
&nbsp;|&nbsp;<a href="msg00646.html">Next</a>
&nbsp;]
&nbsp;&nbsp;&nbsp;&nbsp;
Index:&nbsp;
[&nbsp;<A HREF="author.html#00655">Author</A>
&nbsp;|&nbsp;<A HREF="#00655">Date</A>
&nbsp;|&nbsp;<A HREF="thread.html#00655">Thread</A>
&nbsp;]

<!--X-TopPNI-End-->
<!--X-MsgBody-->
<!--X-Subject-Header-Begin-->
<H1>[MUD-Dev] Re: async i/o and threads (was: Re: lurker emerges</H1>
<HR>
<!--X-Subject-Header-End-->
<!--X-Head-of-Message-->
<UL>
<LI><em>To</em>: <A HREF="mailto:mud-dev#kanga,nu">mud-dev#kanga,nu</A></LI>
<LI><em>Subject</em>: [MUD-Dev] Re: async i/o and threads (was: Re: lurker emerges</LI>
<LI><em>From</em>: "Jon A. Lambert" &lt;<A HREF="mailto:jlsysinc#ix,netcom.com">jlsysinc#ix,netcom.com</A>&gt;</LI>
<LI><em>Date</em>: Tue, 11 Aug 1998 02:59:20 -5</LI>
<LI><em>Reply-To</em>: <A HREF="mailto:mud-dev#kanga,nu">mud-dev#kanga,nu</A></LI>
</UL>
<!--X-Head-of-Message-End-->
<!--X-Head-Body-Sep-Begin-->
<HR>
<!--X-Head-Body-Sep-End-->
<!--X-Body-of-Message-->
<PRE>
On 11 Aug 98, James Wilson wrote:
&gt; From: Jon A. Lambert &lt;jlsysinc#ix,netcom.com&gt;
&gt; 
&gt; &gt; What is the mingw32 system?
&gt; 
&gt; MINimal GNU Win32. It's a cutdown of the whole GnuWin32 package,
&gt; which is hefty and bloated and evil, but to my mind far preferable to
&gt; borland, msvc++, etc. I spit on their crappy IDEs, ptui!
&gt; mingw32:
&gt; &lt;url <A  HREF="http://agnes.dida.physik.uni-essen.de/~janjaap/mingw32/index.html">http://agnes.dida.physik.uni-essen.de/~janjaap/mingw32/index.html</A>&gt;
&gt; gnuwin32:
&gt; &lt;url <A  HREF="http://www.cygnus.com/misc/gnu-win32/">http://www.cygnus.com/misc/gnu-win32/</A>&gt;
&gt;

Ok.  The Cygnus implementation of sockets is somewhat suspect.  All 
other concerns to the side, Cygnus recommends that WIN32 socket 
natives be used in preference to their sockets emulation.  There is a 
great deal of overhead in the Unix emulation (obviously!).  Also, 
Cygnus has in the past found (and often fixed) many an error in this 
area.  There does exist an ability to mix and match Cygus GNU 
libraries with native windows calls.  If there is a portability 
issue, the use of winsock is usually a comfortable port to Linux as 
Linux is to other flavors of Unix.  

Also winsock and winsock2 offer a number of interesting and useful 
features (non-portable, of course), which are theoretically relevant 
to the blocking/non-blocking discussion at hand.  Like 
WSAAsyncSelect(), WSASetBlockingHook(), etc.  Of course, such a 
discussion would not provide any immediate practical value to 
Unix programming.

From what I can glean from the web pages,  the Minimal GNU Win32 
library simply provides a wrapper to winsock natives.  You might
achieve the same level portability results with some minimal 
conditional compilation (at least in the sockets area).  I'd would 
"guess" that read() and write() are mapped to recv() and send() 
since win32 does not attach file handles to sockets.   Thus there is 
likely an abstraction layer that handles file handles to allow 
redirection of select()?  hmm... 

&gt; &gt; &gt; I'm a bit concerned about the overhead of using a thread pool, though,
&gt; since
&gt; &gt; &gt; my two
&gt; &gt; &gt; target platforms (win32 and linux) use heavyweight threads. Has anyone
&gt; tried
&gt; &gt; &gt; a bytecode vm that implements user-level threads, setting up a scheduler
&gt; &gt; &gt; that timeslices between 'processes', switches context on blocking i/o,
&gt; and
&gt; &gt; &gt; so on? Maybe this could give you lightweight, portable threading while
&gt; &gt; &gt; keeping the whole process in a single thread? I'm imagining something
&gt; where
&gt; &gt; &gt; the main thread is either chomping bytecode or checking for io-ready
&gt; &gt; &gt; sockets.
&gt; &gt;
&gt; &gt; Aye .  I believe MUQ does exactly this.  Many of the programable
&gt; &gt; servers impose execution limits on internal tasks (i.e. Cold, LP)
&gt; 
&gt; 
&gt; hmmm... this sounds promising. I'll poke around and see what I can find.
&gt; can anyone comment on the pros and cons of such an approach?

There are some old links on this.  2nd or 3rd Qtr 97.  Look for 
"Threads" in subject line and/or author "Cybne ru Taren" (sp?).

&lt;OT&gt;
As far as the stuff about compiler and mailer preferences, I think 
it's pretty irrelevant to the discussion.  And I care not to go 
there.  
&lt;/OT&gt;
--
--/*\ Jon A. Lambert - TychoMUD     Internet:jlsysinc#ix,netcom.com /*\--
--/*\ Mud Server Developer's Page &lt;<A  HREF="http://www.netcom.com/~jlsysinc">http://www.netcom.com/~jlsysinc</A>&gt; /*\--
--/*\   "Everything that deceives may be said to enchant" - Plato   /*\--


</PRE>

<!--X-Body-of-Message-End-->
<!--X-MsgBody-End-->
<!--X-Follow-Ups-->
<HR>
<!--X-Follow-Ups-End-->
<!--X-References-->
<UL><LI><STRONG>References</STRONG>:
<UL>
<LI><STRONG><A NAME="00651" HREF="msg00651.html">[MUD-Dev] Re: async i/o and threads (was: Re: lurker emerges</A></STRONG>
<UL><LI><EM>From:</EM> "James Wilson" &lt;jwilson#rochester,rr.com&gt;</LI></UL></LI>
</UL></LI></UL>
<!--X-References-End-->
<!--X-BotPNI-->
<UL>
<LI>Prev by Date:
<STRONG><A HREF="msg00654.html">[MUD-Dev] Re: lurker emerges</A></STRONG>
</LI>
<LI>Next by Date:
<STRONG><A HREF="msg00656.html">[MUD-Dev] Re: lurker emerges</A></STRONG>
</LI>
<LI>Prev by thread:
<STRONG><A HREF="msg00651.html">[MUD-Dev] Re: async i/o and threads (was: Re: lurker emerges</A></STRONG>
</LI>
<LI>Next by thread:
<STRONG><A HREF="msg00646.html">[MUD-Dev] Re: async i/o and threads (was: Re: lurker emerges)</A></STRONG>
</LI>
<LI>Index(es):
<UL>
<LI><A HREF="index.html#00655"><STRONG>Date</STRONG></A></LI>
<LI><A HREF="thread.html#00655"><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>[MUD-Dev] Re: clients anyone?...</STRONG>, <EM>(continued)</EM>
<ul compact>
<ul compact>
<ul compact>
<LI><strong><A NAME="00790" HREF="msg00790.html">[MUD-Dev] Re: clients anyone?...</A></strong>, 
Adam Wiggins <a href="mailto:adam#angel,com">adam#angel,com</a>, Thu 20 Aug 1998, 18:25 GMT
</LI>
</ul>
</ul>
<LI><strong><A NAME="01064" HREF="msg01064.html">[MUD-Dev] Re: clients anyone?...</A></strong>, 
J C Lawrence <a href="mailto:claw#under,engr.sgi.com">claw#under,engr.sgi.com</a>, Fri 18 Sep 1998, 20:51 GMT
<UL>
<LI><strong><A NAME="01081" HREF="msg01081.html">[MUD-Dev] Re: clients anyone?...</A></strong>, 
Andrew Wilson <a href="mailto:andrew#aaaaaaaa,demon.co.uk">andrew#aaaaaaaa,demon.co.uk</a>, Sun 20 Sep 1998, 00:58 GMT
</LI>
</UL>
</LI>
</ul>
</LI>
<LI><strong><A NAME="00651" HREF="msg00651.html">[MUD-Dev] Re: async i/o and threads (was: Re: lurker emerges</A></strong>, 
James Wilson <a href="mailto:jwilson#rochester,rr.com">jwilson#rochester,rr.com</a>, Tue 11 Aug 1998, 04:20 GMT
<UL>
<LI><strong><A NAME="00655" HREF="msg00655.html">[MUD-Dev] Re: async i/o and threads (was: Re: lurker emerges</A></strong>, 
Jon A. Lambert <a href="mailto:jlsysinc#ix,netcom.com">jlsysinc#ix,netcom.com</a>, Tue 11 Aug 1998, 06:58 GMT
</LI>
</UL>
</LI>
<LI><strong><A NAME="00646" HREF="msg00646.html">[MUD-Dev] Re: async i/o and threads (was: Re: lurker emerges)</A></strong>, 
James Wilson <a href="mailto:jwilson#rochester,rr.com">jwilson#rochester,rr.com</a>, Tue 11 Aug 1998, 02:44 GMT
<UL>
<LI><strong><A NAME="00650" HREF="msg00650.html">[MUD-Dev] Re: async i/o and threads (was: Re: lurker emerges</A></strong>, 
Jon A. Lambert <a href="mailto:jlsysinc#ix,netcom.com">jlsysinc#ix,netcom.com</a>, Tue 11 Aug 1998, 03:56 GMT
</LI>
</UL>
</LI>
<LI><strong><A NAME="00639" HREF="msg00639.html">[MUD-Dev] Re: META: List combat character and racial memory (was Re: Affordances and social method (Was: Re: Wire d Magazine...))</A></strong>, 
kamikaze <a href="mailto:kamikaze#kuoi,asui.uidaho.edu">kamikaze#kuoi,asui.uidaho.edu</a>, Mon 10 Aug 1998, 20:50 GMT
<UL>
<LI><strong><A NAME="01057" HREF="msg01057.html">[MUD-Dev] Re: META: List combat character and racial memory (was Re: Affordances and social method (Was: Re: Wire d Magazine...))</A></strong>, 
J C Lawrence <a href="mailto:claw#under,engr.sgi.com">claw#under,engr.sgi.com</a>, Thu 17 Sep 1998, 01:07 GMT
</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>