mirror of
https://github.com/justinethier/cyclone.git
synced 2025-05-19 13:49:16 +02:00
Fix deref of delays
This commit is contained in:
parent
0b1c4662fb
commit
c2757d2fe6
1 changed files with 5 additions and 6 deletions
|
@ -27,8 +27,10 @@
|
||||||
;; Delays
|
;; Delays
|
||||||
make-shared-delay
|
make-shared-delay
|
||||||
shared-delay
|
shared-delay
|
||||||
|
shared-delay?
|
||||||
;; Promises
|
;; Promises
|
||||||
make-shared-promise
|
make-shared-promise
|
||||||
|
shared-promise?
|
||||||
deliver
|
deliver
|
||||||
;; Futures
|
;; Futures
|
||||||
future?
|
future?
|
||||||
|
@ -213,15 +215,12 @@
|
||||||
(when (not (shared-delay? d))
|
(when (not (shared-delay? d))
|
||||||
(error "Expected future but received" d))
|
(error "Expected future but received" d))
|
||||||
(mutex-lock! (sd:lock d))
|
(mutex-lock! (sd:lock d))
|
||||||
(cond
|
(when (not (sd:done d))
|
||||||
((sd:done d)
|
|
||||||
(sd:value d))
|
|
||||||
(else
|
|
||||||
(sd:set-value! d
|
(sd:set-value! d
|
||||||
(make-shared ((sd:value d)))) ;; Exec thunk and store result
|
(make-shared ((sd:value d)))) ;; Exec thunk and store result
|
||||||
(sd:set-done! d #t)))
|
(sd:set-done! d #t))
|
||||||
(mutex-unlock! (sd:lock d))
|
(mutex-unlock! (sd:lock d))
|
||||||
)
|
(sd:value d))
|
||||||
|
|
||||||
(define (shared-delay-realized? obj)
|
(define (shared-delay-realized? obj)
|
||||||
(let ((rv #f))
|
(let ((rv #f))
|
||||||
|
|
Loading…
Add table
Reference in a new issue