[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Peridic tasks in MCL 2.0.1
- To: info-mcl@digitool.com
- Subject: Re: Peridic tasks in MCL 2.0.1
- From: poeck@informatik.uni-wuerzburg.de (Karsten Poeck)
- Date: 12 Jan 1995 13:26:53 GMT
- Organization: University of Wuerzburg
- References: <poeck-1201951033170001@wi6a65.informatik.uni-wuerzburg.de>
- Sender: owner-info-mcl@digitool.com
In article <poeck-1201951033170001@wi6a65.informatik.uni-wuerzburg.de>,
I wrote:
> For some applications we need to execute a task peridically in background.
> e.g. listening for an incomming tcp-connection.
> bla, ...
You kind soul pointed out that periodic is spelled periodic and not
peridic. The corrected code follows.
Karsten
;;;;poor mans periodic tasks in MCL without kernel hacking or undocumented
internals
;;;;main idea ccl:*eventhook* may contain a lists of functions that are a
hook into the event system
;;;;the functions have the first chance of processing any events
(in-package :cl-user)
(defvar *id-tasks-plist* nil)
(defun install-simple-periodic-task (id funktion interval &key
(ignore-errors t))
(declare (ignore interval))
;will handle interval in the future
(let ((old-function (getf *id-tasks-plist* id))
(new-function #'(lambda()
(when (zerop (mod (get-internal-run-time) 60))
(if ignore-errors
(ignore-errors (funcall funktion))
(funcall funktion)
))
nil
;otherwise normal-event-processing won't get the event
)))
(when old-function
(setq ccl:*eventhook* (delete old-function ccl:*eventhook*)))
(pushnew new-function ccl:*eventhook*)
(setf (getf *id-tasks-plist* id)
new-function)
)
)
(defun deinstall-simple-periodic-task (id)
(setq ccl:*eventhook* (delete (getf *id-tasks-plist* id) ccl:*eventhook*)))
#|
(install-simple-periodic-task
:test
#'(lambda()
(multiple-value-bind
(sekunde minute stunde tag monat jahr wochentag egal1 egal2)
(get-decoded-Time)
(declare (ignore stunde tag monat jahr wochentag egal1 egal2))
(format ccl:*top-listener* "~2d:~2d" minute sekunde))
(let ((a 'a))
(+ 1 a))
)
100)
(deinstall-simple-periodic-task :test)
|#
Karsten A. Poeck, Lehrstuhl fuer Informatik VI, Universitaet Wuerzburg
Allesgrundweg 12, 97218 Gerbrunn, Germany
E-mail: poeck@informatik.uni-wuerzburg.de
Tel ++ 49 931 70561 18, Fax ++ 49 931 70561 20
http://wi6a76.informatik.uni-wuerzburg.de/HTMLs/ls6-info/Assis/poeck/poeck.html