<div>Here is the key description from Russ Cox on that thread:</div>
<div> </div>
<div class="qt" id="qhide_536226" style="DISPLAY: block">&gt;&gt; Is there another possibility that I missed? <br>&gt;<br> </div>
<div>&gt;It is okay for a channel to have many writers. <br>&gt;In this case I think you can just have N goroutines <br>&gt;each reading from a specific channel and writing <br>&gt;to a shared channel.  The main goroutine just reads <br>
&gt;the one channel. <br> </div>
<div>This is effectively a round robin select. If the actual ability to discriminate between nearly simultaneous inputs is desired, as opposed to just a FIFO, then each type of input should get a shared channel of its own, and a real select operate between these. Within the shared channel there would be many users of the same type who are treated the same (i.e. FIFO), but discrimination could operate between types, of which there might be half a dozen, and thus a select is still efficient at this level. I think this would cover all the usual cases, e.g. players on a large computer game.</div>

<div> </div>
<div>Larry Dickson</div>
<div>Cutting Edge Networked Storage<br> </div>
<div><span class="gmail_quote">On 11/17/09, <b class="gmail_sendername">Guy Hulbert</b> &lt;<a href="mailto:gwhulbert@eol.ca">gwhulbert@eol.ca</a>&gt; wrote:</span>
<blockquote class="gmail_quote" style="PADDING-LEFT: 1ex; MARGIN: 0px 0px 0px 0.8ex; BORDER-LEFT: #ccc 1px solid">On Tue, 2009-17-11 at 19:41 +0000, Kristján Valur Jónsson wrote:<br>&gt; First off, I don&#39;t understand what select does in go, but I assume<br>
&gt; some conceptual similarity to unix select()<br><br>Here is the documentation (link from thread below):<br><a href="http://golang.org/doc/go_spec.html#Select_statements">http://golang.org/doc/go_spec.html#Select_statements</a><br>
<br>&gt;<br>&gt; One thing I&#39;d like to point out is that the select() model of event<br>&gt; handling is inherently non-scalable. Managing it is an O(N) process<br>&gt; each time you want to send or handle an event.<br>
<br>According to this thread, it can be done in O(1):<br><a href="http://groups.google.com/group/golang-nuts/browse_thread/thread/3ba2157b3259ee54/410a3c8c187b1bf7?lnk=raot">http://groups.google.com/group/golang-nuts/browse_thread/thread/3ba2157b3259ee54/410a3c8c187b1bf7?lnk=raot</a><br>
<br>--<br>--gh<br><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></blockquote>
</div><br>