;;;; -*- coding: utf-8; -*-
changes in sbcl-1.0.5 relative to sbcl-1.0.4:
+ * minor incompatible change: changed experimental JOIN-THREAD interface
* documentation: unwinding from asyncronous events has been
documented as unsafe.
* documentation: SB-SYS:WITHOUT-GCING has been documented as unsafe
(setf (sb!kernel:fdocumentation 'join-thread-error-thread 'function)
"The thread that we failed to join.")
-(defun join-thread (thread &key (errorp t) default)
+(defun join-thread (thread &key (default nil defaultp))
#!+sb-doc
"Suspend current thread until THREAD exits. Returns the result
values of the thread function. If the thread does not exit normally,
-return DEFAULT or signal JOIN-THREAD-ERROR depending on ERRORP. This
-function is experimental and it is likely to be changed in the
-future."
+return DEFAULT if given or else signal JOIN-THREAD-ERROR."
(with-mutex ((thread-result-lock thread))
(cond ((car (thread-result thread))
(values-list (cdr (thread-result thread))))
- (errorp
- (error 'join-thread-error :thread thread))
+ (defaultp
+ default)
(t
- default))))
+ (error 'join-thread-error :thread thread)))))
(defun destroy-thread (thread)
#!+sb-doc
(use-package "ASSERTOID")
(defun wait-for-threads (threads)
- (mapc (lambda (thread) (sb-thread:join-thread thread :errorp nil)) threads)
+ (mapc (lambda (thread) (sb-thread:join-thread thread :default nil)) threads)
(assert (not (some #'sb-thread:thread-alive-p threads))))
(assert (eql 1 (length (list-all-threads))))
(with-test (:name '(:join-thread :nlx :default))
(let ((sym (gensym)))
(assert (eq sym (join-thread (make-thread (lambda () (sb-ext:quit)))
- :errorp nil
:default sym)))))
(with-test (:name '(:join-thread :nlx :error))
;;; checkins which aren't released. (And occasionally for internal
;;; versions, especially for internal versions off the main CVS
;;; branch, it gets hairier, e.g. "0.pre7.14.flaky4.13".)
-"1.0.4.3"
+"1.0.4.4"