original commit: 65414279cfb1157b248fe75cfbc6ae06228df856
This commit is contained in:
Matthew Flatt 2004-05-11 16:16:15 +00:00
parent 3acacdbbab
commit b7e6df9c83
3 changed files with 14 additions and 9 deletions

View File

@ -41,7 +41,7 @@
(channel-put-evt empty-ch (make-semaphore))] ; see poll->ch
[tell-full
(channel-put-evt full-ch (make-semaphore))] ; see poll->ch
[enqueue (wrap-evt
[enqueue (convert-evt
enqueue-ch
(lambda (v)
;; We received a put; enqueue it:
@ -51,7 +51,7 @@
(set! queue-last p))))]
[mk-dequeue
(lambda ()
(wrap-evt
(convert-evt
(channel-put-evt dequeue-ch (car queue-first))
(lambda (ignored)
;; A get succeeded; dequeue it:
@ -106,7 +106,7 @@
;; Put ----------------------------------------
(define (async-channel-put-evt ac v)
(letrec ([p (wrap-evt
(letrec ([p (convert-evt
(guard-evt
(lambda ()
;; Make sure queue manager is running:
@ -133,11 +133,11 @@
;; If a value becomes available,
;; create a waitable that returns
;; the value:
(wrap-evt
(convert-evt
normal
(lambda (v)
;; Return a waitable for a successful poll:
(wrap-evt
(convert-evt
always-evt
(lambda (ignored) v))))
;; If not-ready becomes available,

View File

@ -12,24 +12,29 @@
ch)
(define (channel-send-evt ch v)
(make-wrapped-waitable
(make-channel-put-waitable ch v)
(convert-evt
(channel-put-evt ch v)
void))
(define (thread-done-evt th)
(thread-dead-waitable th))
(thread-dead-evt th))
(define (current-time)
(current-inexact-milliseconds))
(define (time-evt t)
(alarm-evt t))
(define (wrap-evt e p)
(convert-evt e p))
(provide/contract
(spawn ((-> any) . -> . thread?))
(channel (-> channel?))
(channel-recv-evt (channel? . -> . evt?))
(channel-send-evt (channel? any? . -> . evt?))
(wrap-evt (evt? (any? . -> . any) . -> . evt?))
(thread-done-evt (thread? . -> . evt?))
(current-time (-> number?))
(time-evt (real? . -> . evt?))))

View File

@ -1,6 +1,6 @@
(module transcr mzscheme
(require (lib "thread.ss"))
(require (lib "port.ss"))
(provide (rename -transcript-on transcript-on)
(rename -transcript-off transcript-off))