X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;ds=sidebyside;f=tests%2Fthreads.impure.lisp;h=f33577a2545aa11e57827f91e81ca3df11fd7122;hb=9b55754d5328a5f44ee224d32865fc8dadee123b;hp=1c8b291e804bfb1664e3b457362e9dd32931cc20;hpb=192731b882467a9014b64b1eb097c8000441da31;p=sbcl.git diff --git a/tests/threads.impure.lisp b/tests/threads.impure.lisp index 1c8b291..f33577a 100644 --- a/tests/threads.impure.lisp +++ b/tests/threads.impure.lisp @@ -66,6 +66,14 @@ (assert (eql (mutex-lock l) 0) nil "6") (describe l)) +;; test that SLEEP actually sleeps for at least the given time, even +;; if interrupted by another thread exiting/a gc/anything +(let ((start-time (get-universal-time))) + (make-thread (lambda () (sleep 1))) ; kid waits 1 then dies ->SIG_THREAD_EXIT + (sleep 5) + (assert (>= (get-universal-time) (+ 5 start-time)))) + + (let ((queue (make-waitqueue :name "queue")) (lock (make-mutex :name "lock"))) (labels ((in-new-thread ()