Add fibers-promise-result-available?
This commit is contained in:
parent
c1796f0081
commit
c90cc88da7
2 changed files with 16 additions and 2 deletions
|
@ -24,7 +24,8 @@
|
|||
#:use-module (fibers conditions)
|
||||
#:export (fibers-delay
|
||||
fibers-force
|
||||
fibers-promise-reset))
|
||||
fibers-promise-reset
|
||||
fibers-promise-result-available?))
|
||||
|
||||
(define-record-type <fibers-promise>
|
||||
(make-fibers-promise thunk values-box evaluated-condition)
|
||||
|
@ -76,3 +77,8 @@
|
|||
(define (fibers-promise-reset fp)
|
||||
(atomic-box-set! (fibers-promise-values-box fp)
|
||||
#f))
|
||||
|
||||
(define (fibers-promise-result-available? fp)
|
||||
(let ((val (atomic-box-ref (fibers-promise-values-box fp))))
|
||||
(not (or (eq? val #f)
|
||||
(eq? val 'started)))))
|
||||
|
|
|
@ -13,8 +13,16 @@
|
|||
(* i 2))))
|
||||
(iota 10))))
|
||||
|
||||
(assert-equal
|
||||
#f
|
||||
(fibers-promise-result-available? (car promises)))
|
||||
|
||||
(assert-equal
|
||||
90
|
||||
(apply + (fibers-map fibers-force promises))))))
|
||||
(apply + (fibers-map fibers-force promises)))
|
||||
|
||||
(assert-equal
|
||||
#t
|
||||
(fibers-promise-result-available? (car promises))))))
|
||||
|
||||
(display "promise test finished successfully\n")
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue