X-Git-Url: http://git.kpe.io/?p=kmrcl.git;a=blobdiff_plain;f=processes.lisp;h=db626132664cfe39f90e52d613e0155cb9e3573c;hp=1cc6a473ed6d3faed93a93d193cb58991af06abb;hb=5cbff06a799c51e2e4bd8644cfca4a64303724a7;hpb=8bbcf109b6cbdfd4c92fe06cc181c56f408b8b82 diff --git a/processes.lisp b/processes.lisp index 1cc6a47..db62613 100644 --- a/processes.lisp +++ b/processes.lisp @@ -7,7 +7,7 @@ ;;;; Programmer: Kevin M. Rosenberg ;;;; Date Started: June 2003 ;;;; -;;;; $Id: processes.lisp,v 1.4 2003/07/13 04:53:32 kevin Exp $ +;;;; $Id$ ;;;; ************************************************************************* (in-package #:kmrcl) @@ -18,7 +18,8 @@ #+cmu (mp:make-process func :name name) #+lispworks (mp:process-run-function name nil func) #+sb-thread (sb-thread:make-thread func) - #-(or allegro cmu lispworks sb-thread) (funcall func) + #+openmcl (ccl:process-run-function name func) + #-(or allegro cmu lispworks sb-thread openmcl) (funcall func) ) (defun destroy-process (process) @@ -26,13 +27,15 @@ #+allegro (mp:process-kill process) #+sb-thread (sb-thread:destroy-thread process) #+lispworks (mp:process-kill process) + #+openmcl (ccl:process-kill process) ) (defun make-lock (name) #+allegro (mp:make-process-lock :name name) #+cmu (mp:make-lock name) #+lispworks (mp:make-lock :name name) - #+sbcl-thread (sb-thread:make-mutex :name name) + #+sb-thread (sb-thread:make-mutex :name name) + #+openmcl (ccl:make-lock name) ) (defmacro with-lock-held ((lock) &body body) @@ -42,9 +45,11 @@ `(mp:with-lock-held (,lock) ,@body) #+lispworks `(mp:with-lock (,lock) ,@body) - #+sbcl-thread - `(sb-thread:with-recursive-lock (,lock) ,@body) - #-(or allegro cmu lispworks sbcl-thread) + #+sb-thread + `(sb-thread:with-mutex (,lock) ,@body) + #+openmcl + `(ccl:with-lock-grabbed (,lock) ,@body) + #-(or allegro cmu lispworks sb-thread openmcl) `(progn ,@body) ) @@ -54,9 +59,14 @@ `(mp:with-timeout (,seconds) ,@body) #+cmu `(mp:with-timeout (,seconds) ,@body) - #+sbcl-thread + #+sb-thread `(sb-ext:with-timeout ,seconds ,@body) - #-(or allegro cmu sbcl-thread) + #+openmcl + `(ccl:process-wait-with-timeout "waiting" + (* ,seconds ccl:*ticks-per-second*) + #'(lambda () + ,@body) nil) + #-(or allegro cmu sb-thread openmcl) `(progn ,@body) )