diff --git a/blocking-box.rkt b/blocking-box.rkt index f33e7bc..d005af8 100644 --- a/blocking-box.rkt +++ b/blocking-box.rkt @@ -19,8 +19,8 @@ (define (manager s g) (define v (channel-get s)) (let loop () - (sync (handle-evt s (lambda (ignored-new-v) (loop))) - (handle-evt (channel-put-evt g v) (lambda (dummy) (loop)))))) + (sync s (channel-put-evt g v)) ;; ignore any future settings, answer all future gettings + (loop))) (define (blocking-box-evt b) (guard-evt diff --git a/test-blocking-box.rkt b/test-blocking-box.rkt new file mode 100644 index 0000000..514cf13 --- /dev/null +++ b/test-blocking-box.rkt @@ -0,0 +1,10 @@ +#lang racket/base + +(require "blocking-box.rkt") +(require rackunit) + +(define b (make-blocking-box)) +(set-blocking-box! b 1) +(set-blocking-box! b 2) +(set-blocking-box! b 3) +(check-equal? (blocking-box-value b) 1)