[cmucl-ticket] [cmucl] #77: Add JOIN-PROCESS

cmucl cmucl-devel at common-lisp.net
Sat Mar 16 17:30:32 UTC 2013


#77: Add JOIN-PROCESS
-------------------------+--------------------------------------------------
 Reporter:  sionescu     |       Owner:  somebody 
     Type:  enhancement  |      Status:  new      
 Priority:  major        |   Milestone:           
Component:  Core         |     Version:  2013-03-a
 Keywords:               |  
-------------------------+--------------------------------------------------

Comment(by sionescu):

 I added a workaround to Bordeaux-Threads, but it would be better to have
 this functionality in CMUCL itself:

 {{{
 (defun %make-thread (function name)
   (mp:make-process (lambda ()
                      (let ((return-values
                              (multiple-value-list (funcall function))))
                        (setf (getf (mp:process-property-list mp:*current-
 process*)
                                    'return-values)
                              return-values)
                        (values-list return-values)))
                    :name name))

 (defun join-thread (thread)
   (mp:process-wait (format nil "Waiting for thread ~A to complete" thread)
                    (lambda () (not (mp:process-alive-p thread))))
   (let ((return-values
           (getf (mp:process-property-list thread) 'return-values)))
     (values-list return-values)))
 }}}

-- 
Ticket URL: <http://trac.common-lisp.net/cmucl/ticket/77#comment:1>
cmucl <http://common-lisp.net/project/cmucl>
Cmucl is a high-performance, free Common Lisp implementation.


More information about the cmucl-ticket mailing list