<div dir="ltr"><div><div><div>Yes, but given Matthew&#39;s code, it first waits (i.e., blocks) with `sync&#39; until a client tries to connect (but does not `accept&#39; it yet).<br></div>Then it goes to atomic (i.e., somewhat non-interruptible) mode and before accepting the client, it checks again that the client is still there.<br>

</div>For this last part, I was trying to use sync/timeout; A zero value for the timer thus returns #f only if no event could sync, i.e. (I thought) if no client is waiting.<br></div>(From the docs: &quot;If <span class="">timeout</span> is a procedure, then
it is called in tail position if polling the <span class="">evt</span>s discovers
no ready events.&quot;)<div><div><br></div><div>But it seems that the event has already been processed and is not available anymore or something.<br><br>Laurent<br></div></div></div><div class="gmail_extra"><br><br><div class="gmail_quote">

On Mon, Apr 22, 2013 at 12:21 PM, Diogo F. S. Ramos <span dir="ltr">&lt;<a href="mailto:diogofsr@gmail.com" target="_blank">diogofsr@gmail.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

<div class="im">Laurent &lt;<a href="mailto:laurent.orseau@gmail.com">laurent.orseau@gmail.com</a>&gt; writes:<br>
<br>
&gt; (sync/timeout 0 (scheme_fd_to_semaphore s MZFD_CREATE_READ #t))<br>
&gt;<br>
&gt; Unfortunately this does not work :)<br>
&gt; It always returns #f.<br>
<br>
</div>I&#39;m not familiar with `sync/timeout&#39; or `scheme_fd_to_semaphore&#39;, but<br>
from `sync/timeout&#39;s documentation:<br>
<br>
  &quot;A zero value for timeout is equivalent to (lambda () #f). In either<br>
  case, each evt is checked at least once before returning #f or calling<br>
  timeout.&quot;<br>
<br>
So, I guess it&#39;s not a surprise that your call always returns `#f&#39;. It&#39;s<br>
not blocking/waiting, how one would want in this situation.<br>
</blockquote></div><br></div>