Add fibers-promise-result-available?

This commit is contained in:
Christopher Baines 2025-01-29 16:16:35 +00:00
parent c1796f0081
commit c90cc88da7
2 changed files with 16 additions and 2 deletions

View file

@ -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)))))

View file

@ -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")