X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=tests%2Fthreads.pure.lisp;h=e58cda7aa7d4512b20f9e208cb4d4ef14d9317a2;hb=219cc40793f9c82fb943b29a1846f898f4f9de1e;hp=1545237611a6506ceb4c299793cf0252f176d27a;hpb=feb345d07a3da8e07a455b5564006f747da4bc1e;p=sbcl.git diff --git a/tests/threads.pure.lisp b/tests/threads.pure.lisp index 1545237..e58cda7 100644 --- a/tests/threads.pure.lisp +++ b/tests/threads.pure.lisp @@ -307,13 +307,10 @@ (t1 (sb-thread:make-thread (test m1 m2 s1 s2) :name "T1")) (t2 (sb-thread:make-thread (test m2 m1 s2 s1) :name "T2"))) ;; One will deadlock, and the other will then complete normally. - ;; ...except sometimes, when we get unlucky, and both will do - ;; the deadlock detection in parallel and both signal. (let ((res (list (sb-thread:join-thread t1) (sb-thread:join-thread t2)))) (assert (or (equal '(:deadlock :ok) res) - (equal '(:ok :deadlock) res) - (equal '(:deadlock :deadlock) res)))))))) + (equal '(:ok :deadlock) res)))))))) (with-test (:name deadlock-detection.2 :skipped-on '(not :sb-thread)) (let* ((m1 (sb-thread:make-mutex :name "M1")) @@ -496,7 +493,7 @@ :timeout 0.01 :default cookie))))) -(with-test (:name :semaphore-notification +(with-test (:name (:semaphore-notification :wait-on-semaphore) :skipped-on '(not :sb-thread)) (let ((sem (make-semaphore)) (ok nil) @@ -542,3 +539,13 @@ unsafe))) (assert (= n (+ k (length safe)))) (assert unsafe)))))) + +(with-test (:name (:semaphore-notification :try-sempahore) + :skipped-on '(not :sb-thread)) + (let* ((sem (make-semaphore)) + (note (make-semaphore-notification))) + (try-semaphore sem 1 note) + (assert (not (semaphore-notification-status note))) + (signal-semaphore sem) + (try-semaphore sem 1 note) + (assert (semaphore-notification-status note))))