[racket] Futures and shared data structure
Hello all
I am trying to understand futures, and I have generated to following
code to see how I would create reader futures. Unfortunately my futures
are not running in parallel and are taking more time that the serial
version. Besides that it seems to capture the vector in a way that it
becomes noncollectable by the GC.
Could anyone give some hints as to why? (my version is "5.0.2" on Linux)
#lang racket
(require racket/future rackunit rackunit/text-ui)
(define DATA (make-vector 99999999 'datum))
(define-test-suite read-from-shared
(test-suite "with futures"
(check-equal?
(time (let ([f (future (λ _ (read-data DATA)))])
(touch f)
(read-data DATA)))
(void)))
(test-suite "no futures"
(check-equal?
(time (read-data DATA)
(read-data DATA))
(void))))
(define (read-data some-data)
(for ([i (in-vector some-data)]) i))
(run-tests read-from-shared)
Thanks
--
Eduardo Bellani
omnia mutantur, nihil interit.