summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--module/srfi/srfi-18.scm19
1 files changed, 10 insertions, 9 deletions
diff --git a/module/srfi/srfi-18.scm b/module/srfi/srfi-18.scm
index 756508c88..adad0d987 100644
--- a/module/srfi/srfi-18.scm
+++ b/module/srfi/srfi-18.scm
@@ -32,6 +32,7 @@
(define-module (srfi srfi-18)
#:use-module ((ice-9 threads) #:prefix threads:)
+ #:use-module (ice-9 match)
#:use-module (srfi srfi-34)
#:export (;; Threads
make-thread
@@ -210,15 +211,15 @@
*unspecified*)
(define (thread-start! thread)
- (let ((x (hashq-ref thread-start-conds
- (check-arg-type threads:thread? thread "thread-start!"))))
- (and x (let ((smutex (car x))
- (scond (cdr x)))
- (hashq-remove! thread-start-conds thread)
- (threads:lock-mutex smutex)
- (threads:signal-condition-variable scond)
- (threads:unlock-mutex smutex)))
- thread))
+ (match (hashq-ref thread-start-conds
+ (check-arg-type threads:thread? thread "thread-start!"))
+ ((smutex . scond)
+ (hashq-remove! thread-start-conds thread)
+ (threads:lock-mutex smutex)
+ (threads:signal-condition-variable scond)
+ (threads:unlock-mutex smutex))
+ (#f #f))
+ thread)
(define (thread-yield!) (threads:yield) *unspecified*)