<div dir="ltr"><div style>Unfortunately, it is still rather easy to stumble upon a primitive which unexpectedly blocks futures.  </div><div style><br></div><div style>Are you familiar with Typed Racket?  Switching to typed can give you performance improvements even in sequential programs.  In futures programs, TR can help you avoid blocks because it uses its extra type information to generate code that uses fast-path primitives wherever possible.  I&#39;m experimenting with this now on your example, so I&#39;ll follow up and let you know what I find out.</div>
<div style><br></div><div style>That being said, it&#39;s possible that there&#39;s some function call in the hottest part of your loop which still blocks -- in that case, yes, the only real short-term option is to write your own version of it, unfortunately.  </div>
<div style><br></div><div style>-James</div><div style><br></div><div class="gmail_extra"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
On Wed, Jul 24, 2013 at 11:34 PM, Joe Gilray &lt;<a href="mailto:jgilray@gmail.com">jgilray@gmail.com</a>&gt; wrote:<br>
<br>
&gt; So I should write my own (gcd   ) and (square?   ) functions?<br>
&gt;<br>
&gt; I can try that, but isn&#39;t there a simple way to use threads?<br>
&gt;<br>
&gt; Thanks,<br>
&gt; -Joe<br><br>
</blockquote></div><br></div></div>