1998Q3/
<!-- MHonArc v2.4.4 -->
<!--X-Subject: [MUD&#45;Dev] Re: lurker emerges -->
<!--X-From-R13: Hnqvz Fxnpuraxb <igNserrubyq.pebpbqvyr.bet> -->
<!--X-Date: Mon, 10 Aug 1998 20:41:52 &#45;0700 -->
<!--X-Message-Id: 35CFBD79.68748E69#freehold,crocodile.org -->
<!--X-Content-Type: text/plain -->
<!--X-Reference: 199808101529.IAA07164#cashew,snugharbor.com.snugharbor.com -->
<!--X-Head-End-->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<html>
<head>
<title>MUD-Dev message, [MUD-Dev] Re: lurker emerges</title>
<!-- meta name="robots" content="noindex,nofollow" -->
<link rev="made" href="mailto:vt#freehold,crocodile.org">
</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="msg00648.html">Previous</a>
&nbsp;|&nbsp;<a href="msg00650.html">Next</a>
&nbsp;]
&nbsp;&nbsp;&nbsp;&nbsp;
Thread:&nbsp;
[&nbsp;<a href="msg00632.html">Previous</a>
&nbsp;|&nbsp;<a href="msg00652.html">Next</a>
&nbsp;]
&nbsp;&nbsp;&nbsp;&nbsp;
Index:&nbsp;
[&nbsp;<A HREF="author.html#00649">Author</A>
&nbsp;|&nbsp;<A HREF="#00649">Date</A>
&nbsp;|&nbsp;<A HREF="thread.html#00649">Thread</A>
&nbsp;]

<!--X-TopPNI-End-->
<!--X-MsgBody-->
<!--X-Subject-Header-Begin-->
<H1>[MUD-Dev] 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: lurker emerges</LI>
<LI><em>From</em>: Vadim Tkachenko &lt;<A HREF="mailto:vt#freehold,crocodile.org">vt#freehold,crocodile.org</A>&gt;</LI>
<LI><em>Date</em>: Mon, 10 Aug 1998 22:41:45 -0500</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>
T. Alexander Popiel wrote:
&gt; 
&gt; In message:  &lt;<A HREF="msg00611.html">35CE83C9.62363952#freehold,crocodile.org</A>&gt;
&gt;              Vadim Tkachenko &lt;vt#freehold,crocodile.org&gt; writes:
&gt; &gt;
&gt; Hmm.  Okay, definitions are always good. :-)  They promote
&gt; communication, as opposed to vociferous noise.

:-)

&gt; My definitions of blocking and non-blocking I/O are as follows:

Preserved for clarity
 
&gt; Blocking I/O: you make a library/system call requesting an I/O
&gt; operation of a given size.  The call does not return until the
&gt; entire operation completes for the entire size requested,
&gt; regardless of delays incurred.  Under some implementations,
&gt; external (and only external) sources may interrupt the call.
&gt; Under no circumstances is your program able to do other work
&gt; while waiting for the I/O to complete.
&gt; 
&gt; Non-blocking I/O: you make a library/system call requesting
&gt; an I/O operation of a given size.  The call always returns
&gt; 'immediately' (after minimal processing of the request,
&gt; responding with whatever data is already on hand), with an
&gt; indication of how much I/O was actually performed.  In some
&gt; implementations (UNIX sockets), no further processing is done
&gt; without additional request.  In other implementations (Amiga,
&gt; apparently, and some of the old mainframes), when the remainder
&gt; of the requested I/O is completed, the calling program is
&gt; informed.  In both cases, a _separate_ library/system call is
&gt; available to wait until more I/O is possible or I/O completes
&gt; (depending on flavor).

Okay, now I see that I meant the same definitions, although have a
different viewpoint.

For last 2 years I'm thinking in Java, before that I'd been thinking in
C++ for 6 years, 2 of which were preemptive and multithreaded, before
that, it was Windows.

Now, I agree that UNIX may not (I'm not really strong in C++ in UNIX)
and Java does not have asynchronous I/O as you describe it. However, I
was doing the stuff mostly top-to-the-bottom and don't really see a
problem here. Let me draft it (I guess, it's pretty obvious):

ACT is the Asynchronous Completion Token (Design patterns...), has
read_count field and a semaphore.

ACT	asyncread( buffer, how_much_do_I_want, boolean all_async );

OK, so what I have is some read performed at once (no sense in async
read if I know the absolute minimum I want), and then I know how much
did I read - the ACT has it. Then, I can go out and do my stuff, and
when I'm ready I may go out and wait for the completion semaphore (let
me emphasise, _event_ semaphore).

So, on the API level - what's the difference between the _library_ call
and the simple piece of code I'm talking about? Agreed, the former may
be _much_ more effective, but if you're going to production, you need
the _scalable_ solution anyway, and if it really bothers you, go to the
platform which does have the stuff you mentioned and make it native, in
Java case.

&gt; The most important distinction in my mind is the ability (or
&gt; lack thereof) to separate the request and the wait for request
&gt; completion.

Nah, the Asynchronous Completion Token is a solution in this case.

For those who still remember what is a Jukebox: guys, I'm terribly sorry
- it's in the transition from 2.0 to 3.0 right now and I'm really
ashamed to give it away as it is - it's patchy and messy, but for those
interested - I can send you the complete CVS repository today. A while
ago, the copyright issues were holding me, but not any more.

Reading the MUD-Dev too much, remember - there was a thread about what
happens to those who start reading it...

&gt; - Alex (who seems to have spawned quite the tempest)

-- 
Still alive and smile stays on,
Vadim Tkachenko &lt;vt#freehold,crocodile.org&gt;
--
UNIX _is_ user friendly, he's just very picky about who his friends are


</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="00654" HREF="msg00654.html">[MUD-Dev] Re: lurker emerges</A></strong>
<ul compact><li><em>From:</em> Vadim Tkachenko &lt;vt#freehold,crocodile.org&gt;</li></ul>
<li><strong><A NAME="00652" HREF="msg00652.html">[MUD-Dev] Re: lurker emerges</A></strong>
<ul compact><li><em>From:</em> "T. Alexander Popiel" &lt;popiel#snugharbor,com&gt;</li></ul>
</UL></LI></UL>
<!--X-Follow-Ups-End-->
<!--X-References-->
<UL><LI><STRONG>References</STRONG>:
<UL>
<LI><STRONG><A NAME="00632" HREF="msg00632.html">[MUD-Dev] Re: lurker emerges</A></STRONG>
<UL><LI><EM>From:</EM> "T. Alexander Popiel" &lt;popiel#snugharbor,com&gt;</LI></UL></LI>
</UL></LI></UL>
<!--X-References-End-->
<!--X-BotPNI-->
<UL>
<LI>Prev by Date:
<STRONG><A HREF="msg00648.html">[MUD-Dev] Re: OT: Re: Ethernet NICS, maximum connections..mud testing.</A></STRONG>
</LI>
<LI>Next by Date:
<STRONG><A HREF="msg00650.html">[MUD-Dev] Re: async i/o and threads (was: Re: lurker emerges</A></STRONG>
</LI>
<LI>Prev by thread:
<STRONG><A HREF="msg00632.html">[MUD-Dev] Re: lurker emerges</A></STRONG>
</LI>
<LI>Next by thread:
<STRONG><A HREF="msg00652.html">[MUD-Dev] Re: lurker emerges</A></STRONG>
</LI>
<LI>Index(es):
<UL>
<LI><A HREF="index.html#00649"><STRONG>Date</STRONG></A></LI>
<LI><A HREF="thread.html#00649"><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: lurker emerges</STRONG>, <EM>(continued)</EM>
<ul compact>
<ul compact>
<ul compact>
<ul compact>
<ul compact>
<LI><strong><A NAME="01053" HREF="msg01053.html">[MUD-Dev] Re: lurker emerges</A></strong>, 
J C Lawrence <a href="mailto:claw#under,engr.sgi.com">claw#under,engr.sgi.com</a>, Thu 17 Sep 1998, 00:26 GMT
</LI>
</ul>
<LI><strong><A NAME="00610" HREF="msg00610.html">[MUD-Dev] Re: lurker emerges</A></strong>, 
T. Alexander Popiel <a href="mailto:popiel#snugharbor,com">popiel#snugharbor,com</a>, Mon 10 Aug 1998, 05:05 GMT
<UL>
<LI><strong><A NAME="00611" HREF="msg00611.html">[MUD-Dev] Re: lurker emerges</A></strong>, 
Vadim Tkachenko <a href="mailto:vt#freehold,crocodile.org">vt#freehold,crocodile.org</a>, Mon 10 Aug 1998, 05:23 GMT
<UL>
<LI><strong><A NAME="00632" HREF="msg00632.html">[MUD-Dev] Re: lurker emerges</A></strong>, 
T. Alexander Popiel <a href="mailto:popiel#snugharbor,com">popiel#snugharbor,com</a>, Mon 10 Aug 1998, 15:29 GMT
<UL>
<LI><strong><A NAME="00649" HREF="msg00649.html">[MUD-Dev] Re: lurker emerges</A></strong>, 
Vadim Tkachenko <a href="mailto:vt#freehold,crocodile.org">vt#freehold,crocodile.org</a>, Tue 11 Aug 1998, 03:41 GMT
<UL>
<LI><strong><A NAME="00652" HREF="msg00652.html">[MUD-Dev] Re: lurker emerges</A></strong>, 
T. Alexander Popiel <a href="mailto:popiel#snugharbor,com">popiel#snugharbor,com</a>, Tue 11 Aug 1998, 04:45 GMT
<UL>
<LI><strong><A NAME="00653" HREF="msg00653.html">[MUD-Dev] Re: lurker emerges</A></strong>, 
Vadim Tkachenko <a href="mailto:vt#freehold,crocodile.org">vt#freehold,crocodile.org</a>, Tue 11 Aug 1998, 05:39 GMT
<LI><strong><A NAME="00658" HREF="msg00658.html">[MUD-Dev] Re: lurker emerges</A></strong>, 
T. Alexander Popiel <a href="mailto:popiel#snugharbor,com">popiel#snugharbor,com</a>, Tue 11 Aug 1998, 15:05 GMT
<LI><strong><A NAME="00676" HREF="msg00676.html">[MUD-Dev] Re: lurker emerges</A></strong>, 
Vadim Tkachenko <a href="mailto:vt#freehold,crocodile.org">vt#freehold,crocodile.org</a>, Wed 12 Aug 1998, 04:33 GMT
</LI>
</LI>
</LI>
</UL>
</LI>
</UL>
</LI>
</UL>
</LI>
</UL>
</LI>
</UL>
</LI>
</ul>
</ul>
</ul>
</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>