guile-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Guile-commits] 04/17: srfi-18: Use `match' in thread-start!.


From: Andy Wingo
Subject: [Guile-commits] 04/17: srfi-18: Use `match' in thread-start!.
Date: Mon, 31 Oct 2016 21:39:37 +0000 (UTC)

wingo pushed a commit to branch master
in repository guile.

commit 4d23c835c4373355e9d6ccd80cc8fe431f4551b9
Author: Andy Wingo <address@hidden>
Date:   Sun Oct 30 21:43:08 2016 +0100

    srfi-18: Use `match' in thread-start!.
    
    * module/srfi/srfi-18.scm (thread-start!): Use `match'.
---
 module/srfi/srfi-18.scm |   19 ++++++++++---------
 1 file changed, 10 insertions(+), 9 deletions(-)

diff --git a/module/srfi/srfi-18.scm b/module/srfi/srfi-18.scm
index 756508c..adad0d9 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*)
 



reply via email to

[Prev in Thread] Current Thread [Next in Thread]