X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=tests%2Fthreads.impure.lisp;h=311e1d5c4656f4df46e8cfbab0ad8be0ac30d504;hb=f179b4c117ffc1886cf106c053b248ad3f88a968;hp=424a6c273000e19757c98cca7d7b0be0bd56d085;hpb=b4799928d368c33c109c2d4a20629c1f8568b0ef;p=sbcl.git diff --git a/tests/threads.impure.lisp b/tests/threads.impure.lisp index 424a6c2..311e1d5 100644 --- a/tests/threads.impure.lisp +++ b/tests/threads.impure.lisp @@ -344,11 +344,18 @@ (with-test (:name (:grab-mutex :timeout :acquisition-fail)) #+sb-lutex (error "Mutex timeout not supported here.") - (let ((m (make-mutex))) + (let ((m (make-mutex)) + (w (make-semaphore))) (with-mutex (m) - (assert (null (join-thread (make-thread - #'(lambda () - (grab-mutex m :timeout 0.1))))))))) + (let ((th (make-thread + #'(lambda () + (prog1 + (grab-mutex m :timeout 0.1) + (signal-semaphore w)))))) + ;; Wait for it to -- otherwise the detect the deadlock chain + ;; from JOIN-THREAD. + (wait-on-semaphore w) + (assert (null (join-thread th))))))) (with-test (:name (:grab-mutex :timeout :acquisition-success)) #+sb-lutex @@ -363,16 +370,18 @@ (with-test (:name (:grab-mutex :timeout+deadline)) #+sb-lutex (error "Mutex timeout not supported here.") - (let ((m (make-mutex))) + (let ((m (make-mutex)) + (w (make-semaphore))) (with-mutex (m) - (assert (eq (join-thread - (make-thread #'(lambda () - (sb-sys:with-deadline (:seconds 0.0) - (handler-case - (grab-mutex m :timeout 0.0) - (sb-sys:deadline-timeout () - :deadline)))))) - :deadline))))) + (let ((th (make-thread #'(lambda () + (sb-sys:with-deadline (:seconds 0.0) + (handler-case + (grab-mutex m :timeout 0.0) + (sb-sys:deadline-timeout () + (signal-semaphore w) + :deadline))))))) + (wait-on-semaphore w) + (assert (eq (join-thread th) :deadline)))))) (with-test (:name (:grab-mutex :waitp+deadline)) #+sb-lutex