1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-05-20 11:40:18 +02:00

srfi-18: 'thread-sleep!' timeout-as-a-number is relative.

This is a followup to <https://bugs.gnu.org/29704>.

* module/srfi/srfi-18.scm (thread-sleep!): When TIMEOUT is a number,
keep it as-is.
* test-suite/tests/srfi-18.test ("thread sleep with number"): Pass 0 as
the timeout.
("thread sleeps fractions of a second"): Pass 0.5 as the timeout.
This commit is contained in:
Ludovic Courtès 2018-02-16 15:17:37 +01:00
parent 2c7b350f93
commit 3986053959
2 changed files with 5 additions and 6 deletions

View file

@ -235,9 +235,9 @@ object (absolute point in time), or #f."
(define (thread-yield!) (threads:yield) *unspecified*)
(define (thread-sleep! timeout)
(let* ((ct (time->seconds (current-time)))
(t (cond ((time? timeout) (- (time->seconds timeout) ct))
((number? timeout) (- timeout ct))
(let* ((t (cond ((time? timeout) (- (time->seconds timeout)
(time->seconds (current-time))))
((number? timeout) timeout)
(else (scm-error 'wrong-type-arg "thread-sleep!"
"Wrong type argument: ~S"
(list timeout)

View file

@ -94,13 +94,12 @@
(unspecified? (thread-sleep! future-time))))
(pass-if "thread sleep with number"
(let ((old-secs (car (current-time))))
(unspecified? (thread-sleep! (+ (time->seconds (current-time)))))))
(unspecified? (thread-sleep! 0)))
(pass-if "thread sleeps fractions of a second"
(let* ((current (time->seconds (current-time)))
(future (+ current 0.5)))
(thread-sleep! future)
(thread-sleep! 0.5)
(>= (time->seconds (current-time)) future)))
(pass-if "thread does not sleep on past time"