From faeb19a27e4705f62cc3b11fab5f76589d97772c Mon Sep 17 00:00:00 2001 From: Tony Garnock-Jones Date: Wed, 23 Nov 2011 15:50:56 -0500 Subject: [PATCH] Simplify blocking-box's manager --- blocking-box.rkt | 4 ++-- test-blocking-box.rkt | 10 ++++++++++ 2 files changed, 12 insertions(+), 2 deletions(-) create mode 100644 test-blocking-box.rkt 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)