<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns:p="urn:schemas-microsoft-com:office:powerpoint" xmlns:a="urn:schemas-microsoft-com:office:access" xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882" xmlns:s="uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882" xmlns:rs="urn:schemas-microsoft-com:rowset" xmlns:z="#RowsetSchema" xmlns:b="urn:schemas-microsoft-com:office:publisher" xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet" xmlns:c="urn:schemas-microsoft-com:office:component:spreadsheet" xmlns:odc="urn:schemas-microsoft-com:office:odc" xmlns:oa="urn:schemas-microsoft-com:office:activation" xmlns:html="http://www.w3.org/TR/REC-html40" xmlns:q="http://schemas.xmlsoap.org/soap/envelope/" xmlns:rtc="http://microsoft.com/officenet/conferencing" xmlns:D="DAV:" xmlns:Repl="http://schemas.microsoft.com/repl/" xmlns:mt="http://schemas.microsoft.com/sharepoint/soap/meetings/" xmlns:x2="http://schemas.microsoft.com/office/excel/2003/xml" xmlns:ppda="http://www.passport.com/NameSpace.xsd" xmlns:ois="http://schemas.microsoft.com/sharepoint/soap/ois/" xmlns:dir="http://schemas.microsoft.com/sharepoint/soap/directory/" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:dsp="http://schemas.microsoft.com/sharepoint/dsp" xmlns:udc="http://schemas.microsoft.com/data/udc" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:sub="http://schemas.microsoft.com/sharepoint/soap/2002/1/alerts/" xmlns:ec="http://www.w3.org/2001/04/xmlenc#" xmlns:sp="http://schemas.microsoft.com/sharepoint/" xmlns:sps="http://schemas.microsoft.com/sharepoint/soap/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:udcs="http://schemas.microsoft.com/data/udc/soap" xmlns:udcxf="http://schemas.microsoft.com/data/udc/xmlfile" xmlns:udcp2p="http://schemas.microsoft.com/data/udc/parttopart" xmlns:wf="http://schemas.microsoft.com/sharepoint/soap/workflow/" xmlns:dsss="http://schemas.microsoft.com/office/2006/digsig-setup" xmlns:dssi="http://schemas.microsoft.com/office/2006/digsig" xmlns:mdssi="http://schemas.openxmlformats.org/package/2006/digital-signature" xmlns:mver="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns:mrels="http://schemas.openxmlformats.org/package/2006/relationships" xmlns:spwp="http://microsoft.com/sharepoint/webpartpages" xmlns:ex12t="http://schemas.microsoft.com/exchange/services/2006/types" xmlns:ex12m="http://schemas.microsoft.com/exchange/services/2006/messages" xmlns:pptsl="http://schemas.microsoft.com/sharepoint/soap/SlideLibrary/" xmlns:spsl="http://microsoft.com/webservices/SharePointPortalServer/PublishedLinksService" xmlns:Z="urn:schemas-microsoft-com:" xmlns:st="&#1;" xmlns="http://www.w3.org/TR/REC-html40">

<head>
<meta http-equiv=Content-Type content="text/html; charset=iso-8859-1">
<meta name=Generator content="Microsoft Word 12 (filtered medium)">
<style>
<!--
 /* Font Definitions */
 @font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:Tahoma;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
 /* Style Definitions */
 p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
span.gmailquote
        {mso-style-name:gmail_quote;}
span.EmailStyle18
        {mso-style-type:personal-reply;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
.MsoChpDefault
        {mso-style-type:export-only;}
@page Section1
        {size:612.0pt 792.0pt;
        margin:70.85pt 70.85pt 70.85pt 70.85pt;}
div.Section1
        {page:Section1;}
-->
</style>
<!--[if gte mso 9]><xml>
 <o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
 <o:shapelayout v:ext="edit">
  <o:idmap v:ext="edit" data="1" />
 </o:shapelayout></xml><![endif]-->
</head>

<body lang=IS link=blue vlink=purple>

<div class=Section1>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'>Well, on Windows, one of the rules of efficient network
programming is to not use select(). <o:p></o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'>See:  </span><a
href="http://tangentsoft.net/wskfaq/articles/io-strategies.html">http://tangentsoft.net/wskfaq/articles/io-strategies.html</a><o:p></o:p></p>

<p class=MsoNormal>and <a
href="http://msdn.microsoft.com/en-us/magazine/dvdarchive/cc302334.aspx">http://msdn.microsoft.com/en-us/magazine/dvdarchive/cc302334.aspx</a><o:p></o:p></p>

<p class=MsoNormal>select() is discouraged on windows except for compatibility
reasons, since it works contrary to the internal IO scheduling mechanisms.<o:p></o:p></p>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

<p class=MsoNormal>K<o:p></o:p></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'><o:p>&nbsp;</o:p></span></p>

<div style='border:none;border-left:solid blue 1.5pt;padding:0cm 0cm 0cm 4.0pt'>

<div>

<div style='border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm 0cm 0cm'>

<p class=MsoNormal><b><span lang=EN-US style='font-size:10.0pt;font-family:
"Tahoma","sans-serif"'>From:</span></b><span lang=EN-US style='font-size:10.0pt;
font-family:"Tahoma","sans-serif"'> Larry Dickson
[mailto:ldickson@cuttedge.com] <br>
<b>Sent:</b> 14. júlí 2009 15:34<br>
<b>To:</b> Kristján Valur Jónsson<br>
<b>Cc:</b> Henning Diedrich; stackless@stackless.com<br>
<b>Subject:</b> Re: [Stackless] irc threads<o:p></o:p></span></p>

</div>

</div>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

<div>

<p class=MsoNormal>There seems to be a false assumption here: select does not
&quot;poll the sockets&quot; (or anything else)&nbsp;and it is not inefficient.
In fact, it blocks until one of &nbsp;the events in question takes place, then
reawakens a single process (e.g. main tasklet). This is as efficient as you can
get, and &quot;native facilities&quot; are almost certainly just doing the same
thing in a hidden place.<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal>&nbsp;<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal>Larry Dickson<br>
Cutting Edge Networked Storage<br>
&nbsp;<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal><span class=gmailquote>On 7/9/09, <b>Kristján Valur Jónsson</b>
&lt;<a href="mailto:kristjan@ccpgames.com">kristjan@ccpgames.com</a>&gt; wrote:</span>
<o:p></o:p></p>

<p class=MsoNormal>StacklessIO is written in C++.&nbsp;&nbsp;It uses native
facilities to notify an internal event queue when an IO request has completed,
instead of requiring the &quot;main tasklet&quot; to regularly poll the sockets
using select() which is inefficient.&nbsp;&nbsp;This aims to minimize latency
and reduce overhead.&nbsp;&nbsp;It can also use the async. notification
facility of the python C api to wake up sleeping tasklets without requiring the
main tasklet to poll the event queue.<br>
It is also more 'complete' in its emulation of the native socket module, I
think.<br>
But performance tests by Richard on his module have still shown it to be very
capable, and to scale better than threaded solutions like your irc server, so
it may well be quite adequate for the task.<br>
<br>
K<br>
<br>
&gt; -----Original Message-----<br>
&gt; From: Henning Diedrich [mailto:<a href="mailto:hd@authentic-internet.de">hd@authentic-internet.de</a>]<br>
&gt; Sent: 9. júlí 2009 14:02<br>
&gt; To: Kristján Valur Jónsson; <a href="mailto:stackless@stackless.com">stackless@stackless.com</a><br>
&gt; Subject: Re: [Stackless] irc threads<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt; Kristján Valur Jónsson wrote:<br>
&gt; &gt; Yes, stacklessIO is designed to do that for you, to provide a<br>
&gt; transparently tasklet-blocking replacement module for socket and<br>
&gt; others.<br>
&gt; &gt; However, I hven't still managed to release it (although I do intend<br>
&gt; to as soon as I can) and it is at them moment Windows only, and likely<br>
&gt; to remain so for a bit.<br>
&gt; &gt;<br>
&gt; &gt; Meanwhile, there is Richard Tew's async socket implementation.<br>
&gt; &gt;<br>
&gt; &gt; K<br>
&gt; &gt;<br>
&gt;<br>
&gt; Thanks for the clarification. What is the difference between<br>
&gt; stacklessIO<br>
&gt; and Richard's implementation? This question is probably naive but maybe<br>
&gt; some pointers are possible?<br>
&gt;<br>
&gt; Thanks,<br>
&gt; Henning<br>
<br>
<br>
_______________________________________________<br>
Stackless mailing list<br>
<a href="mailto:Stackless@stackless.com">Stackless@stackless.com</a><br>
<a href="http://www.stackless.com/mailman/listinfo/stackless">http://www.stackless.com/mailman/listinfo/stackless</a><o:p></o:p></p>

</div>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

</div>

</div>

</body>

</html>