diff --git a/module/srfi/srfi-18.scm b/module/srfi/srfi-18.scm index aa2b2b226..fe5e76477 100644 --- a/module/srfi/srfi-18.scm +++ b/module/srfi/srfi-18.scm @@ -147,17 +147,13 @@ ;; exceptions wrapped in an uncaught-exception wrapper. (define* (make-thread thunk #:optional name) - (let ((lm (make-mutex 'launch-mutex)) - (lc (make-condition-variable 'launch-condition-variable)) - (sm (make-mutex 'start-mutex)) + (let ((sm (make-mutex 'start-mutex)) (sc (make-condition-variable 'start-condition-variable))) - (threads:lock-mutex lm) + (threads:lock-mutex sm) (let ((t (threads:call-with-new-thread (lambda () - (threads:lock-mutex lm) - (threads:signal-condition-variable lc) (threads:lock-mutex sm) - (threads:unlock-mutex lm) + (threads:signal-condition-variable sc) (threads:wait-condition-variable sc sm) (threads:unlock-mutex sm) (thunk)) @@ -168,10 +164,10 @@ (match (cons key args) (('srfi-34 obj) obj) (obj obj)))))))))) - (hashq-set! thread-start-conds t (cons sm sc)) (when name (hashq-set! object-names t name)) - (threads:wait-condition-variable lc lm) - (threads:unlock-mutex lm) + (threads:wait-condition-variable sc sm) + (hashq-set! thread-start-conds t (cons sm sc)) + (threads:unlock-mutex sm) t))) (define (thread-name thread)