mirror of
https://github.com/justinethier/cyclone.git
synced 2025-05-19 05:39:17 +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
|
||||
make-shared-delay
|
||||
shared-delay
|
||||
shared-delay?
|
||||
;; Promises
|
||||
make-shared-promise
|
||||
shared-promise?
|
||||
deliver
|
||||
;; Futures
|
||||
future?
|
||||
|
@ -213,15 +215,12 @@
|
|||
(when (not (shared-delay? d))
|
||||
(error "Expected future but received" d))
|
||||
(mutex-lock! (sd:lock d))
|
||||
(cond
|
||||
((sd:done d)
|
||||
(sd:value d))
|
||||
(else
|
||||
(when (not (sd:done d))
|
||||
(sd:set-value! d
|
||||
(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))
|
||||
)
|
||||
(sd:value d))
|
||||
|
||||
(define (shared-delay-realized? obj)
|
||||
(let ((rv #f))
|
||||
|
|
Loading…
Add table
Reference in a new issue