X-Git-Url: http://git.kpe.io/?p=kmrcl.git;a=blobdiff_plain;f=processes.lisp;h=70de5fb0178859c4e7331d3bc27a18f810badd5b;hp=f89d010931b1a3f8e8eabe77b123ada76954c2c7;hb=90225d9ba12f7a9116bcc923afdaf6e76a8c6728;hpb=ffa469ca8554ae12f2a5e297e8a0880d784b1f12 diff --git a/processes.lisp b/processes.lisp index f89d010..70de5fb 100644 --- a/processes.lisp +++ b/processes.lisp @@ -17,8 +17,9 @@ #+allegro (mp:process-run-function name func) #+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) + #+sb-thread (sb-thread:make-thread func :name name) + #+openmcl (ccl:process-run-function name func) + #-(or allegro cmu lispworks sb-thread openmcl) (funcall func) ) (defun destroy-process (process) @@ -26,6 +27,7 @@ #+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) @@ -33,6 +35,7 @@ #+cmu (mp:make-lock name) #+lispworks (mp:make-lock :name name) #+sb-thread (sb-thread:make-mutex :name name) + #+openmcl (ccl:make-lock name) ) (defmacro with-lock-held ((lock) &body body) @@ -44,7 +47,9 @@ `(mp:with-lock (,lock) ,@body) #+sb-thread `(sb-thread:with-recursive-lock (,lock) ,@body) - #-(or allegro cmu lispworks sb-thread) + #+openmcl + `(ccl:with-lock-grabbed (,lock) ,@body) + #-(or allegro cmu lispworks sb-thread openmcl) `(progn ,@body) ) @@ -56,7 +61,12 @@ `(mp:with-timeout (,seconds) ,@body) #+sb-thread `(sb-ext:with-timeout ,seconds ,@body) - #-(or allegro cmu sb-thread) + #+openmcl + `(ccl:process-wait-with-timeout "waiting" + (* ,seconds ccl:*ticks-per-second*) + #'(lambda () + ,@body) nil) + #-(or allegro cmu sb-thread openmcl) `(progn ,@body) )