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)
|
#:use-module (fibers conditions)
|
||||||
#:export (fibers-delay
|
#:export (fibers-delay
|
||||||
fibers-force
|
fibers-force
|
||||||
fibers-promise-reset))
|
fibers-promise-reset
|
||||||
|
fibers-promise-result-available?))
|
||||||
|
|
||||||
(define-record-type <fibers-promise>
|
(define-record-type <fibers-promise>
|
||||||
(make-fibers-promise thunk values-box evaluated-condition)
|
(make-fibers-promise thunk values-box evaluated-condition)
|
||||||
|
@ -76,3 +77,8 @@
|
||||||
(define (fibers-promise-reset fp)
|
(define (fibers-promise-reset fp)
|
||||||
(atomic-box-set! (fibers-promise-values-box fp)
|
(atomic-box-set! (fibers-promise-values-box fp)
|
||||||
#f))
|
#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))))
|
(* i 2))))
|
||||||
(iota 10))))
|
(iota 10))))
|
||||||
|
|
||||||
|
(assert-equal
|
||||||
|
#f
|
||||||
|
(fibers-promise-result-available? (car promises)))
|
||||||
|
|
||||||
(assert-equal
|
(assert-equal
|
||||||
90
|
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")
|
(display "promise test finished successfully\n")
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue