anchor.diff:    (mp:process-alive-p thread))
   
   (defun join-thread (thread)
  +  #-#.(cl:if (cl:find-symbol (cl:string '#:process-join) :mp) '(and) '(or))
     (mp:process-wait (format nil "Waiting for thread ~A to complete" thread)
                      (complement #'mp:process-alive-p)
  -                   thread))
  +                   thread)
  +  #+#.(cl:if (cl:find-symbol (cl:string '#:process-join) :mp) '(and) '(or))
  +  (mp:process-join thread))
   
   (mark-supported)
  
positive.code:   (mp:process-run-function name nil function))
  
  (defun current-thread ()
    mp:*current-process*)
  
  (defun threadp (object)
    (typep object 'mp:process))
  
  (defun thread-name (thread)
    (mp:process-name thread))
  
negative.code:                 #-(or lispworks4 lispworks5) t))
  
  (defun acquire-recursive-lock (lock &optional (wait-p t))
    (acquire-lock lock wait-p))
  
  (defun release-recursive-lock (lock)
    (release-lock lock))
  
  (defmacro with-recursive-lock-held ((place) &body body)
  