<div class="gmail_quote"><div>It looks like you&#39;ve found a futures bug.  This is being caused by the interaction between futures and custodians (which DrRacket is using) -- we&#39;ve identified a fix, but need a little more testing to ensure that it&#39;s working properly.  I will keep you posted here. </div>
<div><br></div><div>-James </div><div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">The program below has strange behaviour:<br>
I run it from DrScheme on a dual core machine with two processors.<br>
No other applications active.<br>
When I run it the first time it uses 100% of both processors.<br>
Running it again without leaving DrScheme, it apparently uses one processor<br>
at a time only, although switching frequently. CPU usage histories mirror<br>
each other. How come only one processor is used at a time during the second<br>
run?<br>
Leaving DrScheme, restarting DrScheme and running again gives me 100% of<br>
both processors again.<br>
In all runs processor-count returns 2.<br>
Thanks, Jos<br>
<br>
DrRacket, version 5.1.1.5--2011-05-09(b74c9f9/a) [3m].<br>
Windows 7.<br>
Intel Pentium dual core CPU E6500.<br>
<br>
#lang racket<br>
; check that both processors are used by means of<br>
; windows tool for measurement of CPU usage.<br>
(require racket/unsafe/ops)<br>
(require racket/fixnum)<br>
(require racket/future)<br>
(collect-garbage)<br>
(processor-count) ; -&gt; 2<br>
(define N/2 #e1e8)<br>
(define N (* 2 N/2))<br>
(define V (make-fxvector N))<br>
(define (set-V! f r) (unsafe-fxvector-set! V f r))<br>
<br>
(define (task1)<br>
 (for ((i (in-range 50)))<br>
  (for ((k (in-range 0 N/2))) (set-V! k k))))<br>
<br>
(define (task2)<br>
 (for ((i (in-range 50)))<br>
  (for ((k (in-range N/2 N))) (set-V! k k))))<br>
<br>
; task1 fills the first half of vector V.<br>
; task2 the second half.<br>
; In both tasks the ((i (in-range 50))) is inserted in order to<br>
; force the program to run long enough to see its parallel effects.<br>
<br>
(define f (future task1))<br>
(task2)<br>
(touch f)<br>
; Clear memory avoiding memory overflow during next run.<br>
(set! V #f)<br>
(set! f #f)<br>
(collect-garbage)<br>
<br>
<br>
<br>
<br>
-------------- next part --------------<br>
An HTML attachment was scrubbed...<br>
URL: &lt;<a href="http://lists.racket-lang.org/users/archive/attachments/20110516/4edbda6f/attachment-0001.html" target="_blank">http://lists.racket-lang.org/users/archive/attachments/20110516/4edbda6f/attachment-0001.html</a>&gt;<br>

<br>
End of users Digest, Vol 69, Issue 45<br>
*************************************<br>
</blockquote></div><br>