<div class="gmail_quote"><div>From: Claude Heiland-Allen &lt;<a href="mailto:claudiusmaximus@goto10.org">claudiusmaximus@goto10.org</a>&gt;</div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">

<br>
On 23/10/10 23:17, Donn Cave wrote:<br>
&gt; Quoth Claude Heiland-Allen&lt;<a href="mailto:claudiusmaximus@goto10.org">claudiusmaximus@goto10.org</a>&gt;,<br>
&gt; ...<br>
&gt;&gt; The conclusion I drew was that &quot;unsafe&quot; foreign functions block the<br>
&gt;&gt; current &quot;capability&quot; (OS thread) and any &quot;threads&quot; (Haskell forkIO etc)<br>
&gt;&gt; currently scheduled on that capability, but other capabilities and<br>
&gt;&gt; threads continue executing as normal.<br>
<br>
... until GC time when all capabilities must be ready. (?)<br></blockquote><div><br></div><div>That&#39;s quite interesting.  Thanks very much to everyone who contributed to this.  I think my understanding of the interactions between threads and foreign functions has deepened considerably. I may be able to accomplish what I want after all.</div>
<div><br></div><div>I am somewhat surprised that all capabilities must be ready for GC; I thought with the parallel GC that wouldn&#39;t be necessary.  But I don&#39;t know much about GC implementations so I try not to let their behavior surprise me too much.</div>
<div><br></div><div>John</div></div>