projects
/
kmrcl.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Add parse-float
[kmrcl.git]
/
processes.lisp
diff --git
a/processes.lisp
b/processes.lisp
index 88aa05113da3613e973a863dd318fc2d4d275be9..22cde94ecc11f329591500fff403e1d7e024dc5a 100644
(file)
--- a/
processes.lisp
+++ b/
processes.lisp
@@
-1,4
+1,4
@@
-;;;; -*- Mode: Lisp; Syntax: ANSI-Common-Lisp; Base: 10
; Package: modlisp
-*-
+;;;; -*- Mode: Lisp; Syntax: ANSI-Common-Lisp; Base: 10 -*-
;;;; *************************************************************************
;;;; FILE IDENTIFICATION
;;;;
;;;; *************************************************************************
;;;; FILE IDENTIFICATION
;;;;
@@
-6,8
+6,6
@@
;;;; Purpose: Multiprocessing functions
;;;; Programmer: Kevin M. Rosenberg
;;;; Date Started: June 2003
;;;; Purpose: Multiprocessing functions
;;;; Programmer: Kevin M. Rosenberg
;;;; Date Started: June 2003
-;;;;
-;;;; $Id$
;;;; *************************************************************************
(in-package #:kmrcl)
;;;; *************************************************************************
(in-package #:kmrcl)
@@
-17,8
+15,9
@@
#+allegro (mp:process-run-function name func)
#+cmu (mp:make-process func :name name)
#+lispworks (mp:process-run-function name nil func)
#+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)
+ #+ccl (ccl:process-run-function name func)
+ #-(or allegro cmu lispworks sb-thread ccl) (funcall func)
)
(defun destroy-process (process)
)
(defun destroy-process (process)
@@
-26,25
+25,37
@@
#+allegro (mp:process-kill process)
#+sb-thread (sb-thread:destroy-thread process)
#+lispworks (mp:process-kill process)
#+allegro (mp:process-kill process)
#+sb-thread (sb-thread:destroy-thread process)
#+lispworks (mp:process-kill process)
+ #+ccl (ccl:process-kill process)
)
(defun make-lock (name)
)
(defun make-lock (name)
+ "Make a named process lock."
+ #+abcl (ext:make-thread-lock)
#+allegro (mp:make-process-lock :name name)
#+allegro (mp:make-process-lock :name name)
+ #+ccl (ccl:make-lock name)
#+cmu (mp:make-lock name)
#+lispworks (mp:make-lock :name name)
#+sb-thread (sb-thread:make-mutex :name name)
#+cmu (mp:make-lock name)
#+lispworks (mp:make-lock :name name)
#+sb-thread (sb-thread:make-mutex :name name)
- )
+ #-(or lispworks abcl openmcl allegro sb-thread)
+ (declare (ignore name))
+ #-(or abcl allegro ccl cmu lispworks sb-thread)
+ nil)
+
(defmacro with-lock-held ((lock) &body body)
(defmacro with-lock-held ((lock) &body body)
+ #+abcl
+ `(ext:with-thread-lock (,lock) ,@body)
#+allegro
`(mp:with-process-lock (,lock) ,@body)
#+allegro
`(mp:with-process-lock (,lock) ,@body)
+ #+ccl
+ `(ccl:with-lock-grabbed (,lock) ,@body)
#+cmu
`(mp:with-lock-held (,lock) ,@body)
#+lispworks
`(mp:with-lock (,lock) ,@body)
#+sb-thread
#+cmu
`(mp:with-lock-held (,lock) ,@body)
#+lispworks
`(mp:with-lock (,lock) ,@body)
#+sb-thread
- `(sb-thread:with-
mutex
(,lock) ,@body)
- #-(or a
llegro
cmu lispworks sb-thread)
+ `(sb-thread:with-
recursive-lock
(,lock) ,@body)
+ #-(or a
bcl allegro ccl
cmu lispworks sb-thread)
`(progn ,@body)
)
`(progn ,@body)
)
@@
-56,11
+67,19
@@
`(mp:with-timeout (,seconds) ,@body)
#+sb-thread
`(sb-ext:with-timeout ,seconds ,@body)
`(mp:with-timeout (,seconds) ,@body)
#+sb-thread
`(sb-ext:with-timeout ,seconds ,@body)
- #-(or allegro cmu sb-thread)
+ #+ccl
+ `(ccl:process-wait-with-timeout "waiting"
+ (* ,seconds ccl:*ticks-per-second*)
+ #'(lambda ()
+ ,@body) nil)
+ #-(or allegro cmu sb-thread ccl)
`(progn ,@body)
)
`(progn ,@body)
)
-
+
(defun process-sleep (n)
(defun process-sleep (n)
+ "Put thread to sleep for n seconds."
#+allegro (mp:process-sleep n)
#-allegro (sleep n))
#+allegro (mp:process-sleep n)
#-allegro (sleep n))
+
+