hi,
we have installed CMU-CL here and now I need to get
lightweight processes running. I would like to do the following
(SETF WORLD-PROCESS*
(MAKE-PROCESS "periodically do sth"
#'(LAMBDA ()
(REPEAT :INFINITE
do sth
wait a little))))
Ideally, I'd like to port the following file from LUCID to CMU-CL,
i.e. do the right substitutions for the functions in the LCL package.
Do you have an idea where I can find bits and pieces for doing this? or,
know somebody who might know about this?
thanks a lot for your help
--Michael
(DEFMACRO WITH-PROC-LOCK (L &REST BODY)
`(LCL:WITH-PROCESS-LOCK ((CAR ,(CAR L))) ,@BODY) )
(SPECDECL SYSTEM:*INHIBIT-INTERRUPTIONS* - obj)
(DEFVAR INITIAL-PROCESS* LCL:*INITIAL-PROCESS*)
(DEFVAR SCHEDULING-QUANTUM* LCL:*SCHEDULING-QUANTUM*)
(SPECDECL (INITIAL-PROCESS-INTERRUPTED* '#F) - boolean)
(DEFUN MAKE-BREAKABLE-PROCESS (NAME FUNCTION)
(LCL:MAKE-PROCESS :NAME NAME
:FUNCTION
(\\ ()
(LET ((INITIAL-PROCESS-INTERRUPTED '#F))
(LCL:HANDLER-BIND
((ERROR (\\ (CND)
(UNWIND-PROTECT
(PROGN
(!= INITIAL-PROCESS-INTERRUPTED '#T)
(OUT (TO (ERROUT))
"Breakable process " (D NAME)
" experienced condition " cnd t)
(LCL:INTERRUPT-PROCESS INITIAL-PROCESS*
(\\ ()
(LCL:PROCESS-WAIT
"I/O stream grabbed"
(\\ ()
(NOT INITIAL-PROCESS-INTERRUPTED)))))
(LCL:INVOKE-DEBUGGER CND))
(!= INITIAL-PROCESS-INTERRUPTED '#F)))))
(FUNCALL FUNCTION))))))
(DEFUN PROC-KILL (P) (LCL:KILL-PROCESS P))
(DEFUN PROC-WAIT (R FN) (LCL:PROCESS-WAIT R FN))
(DEFUN PROC-WAIT-WITH-TIMEOUT (R TIME FN)
(LCL:PROCESS-WAIT-WITH-TIMEOUT R TIME FN) )
(DEFUN PROC-DEACTIVATE (P) (LCL:DEACTIVATE-PROCESS P))
(DEFUN PROC-ACTIVATE (P) (LCL:ACTIVATE-PROCESS P))
(DEFUN PROC-INTERRUPT (P FN) (LCL:INTERRUPT-PROCESS P FN))
(DEFUN SYMBOL-PROC-VALUE (SYM PROC) (LCL:SYMBOL-PROCESS-VALUE SYM PROC))
(DEFUN SET-SYMBOL-PROC-VALUE (SYM PROC NEW)
(SETF (LCL:SYMBOL-PROCESS-VALUE SYM PROC) NEW) )
(DEFUN PROC-STATE (P) (LCL:PROCESS-STATE P))
--
=========================================================================
Michael Beetz Tel.: +49 228 550-299
Institut fuer Informatik III Fax: +49 228 550-382
Universitaet Bonn
Roemerstr. 164
D-53117 Bonn
·····@cs.uni-bonn.de