X-Git-Url: https://jxself.org/git/?p=8sync.git;a=blobdiff_plain;f=8sync%2Fagenda.scm;h=9884afc34ffd86ee05f95aed64c795ab84bb1663;hp=da578a77f25a0ad839ba80f379ded4bac102d697;hb=19ecc5f415fac9713aa2b037926ab80e95f75197;hpb=e6b478ce79bd4667d6f31554053134b11e39760c diff --git a/8sync/agenda.scm b/8sync/agenda.scm index da578a7..9884afc 100644 --- a/8sync/agenda.scm +++ b/8sync/agenda.scm @@ -471,11 +471,25 @@ forge ahead in our current function!" (make-run-request (lambda () body ...) #f)))))) ;; TODO: Rewrite when we move to this being just `sleep'. -(define (8sleep time) +(define (8sleep secs) + "Like sleep, but asynchronous." (8sync-abort-to-prompt (make-async-request (lambda (kont) - (make-run-request (lambda () (kont #f)) (tdelta time)))))) + (make-run-request (lambda () (kont #f)) (tdelta secs)))))) + +(define (8usleep usecs) + "Like usleep, but asynchronous." + (define (usecs->time-pair) + (if (< 1000000) + (cons 0 usecs) + (let* ((sec (floor (/ usecs 1000000))) + (msec (- usecs (* sec 1000000)))) + (cons sec msec)))) + (8sync-abort-to-prompt + (make-async-request + (lambda (kont) + (make-run-request (lambda () (kont #f)) (tdelta usecs->time-pair)))))) ;; Voluntarily yield execution (define (yield) ; @@: should this be define-inlinable?