Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Common Lisp Timer

I would like to start a timer in my common lisp application that after a certain amount of time it will call a certain method. What would be the best way to accomplish this?

like image 869
Mike2012 Avatar asked Dec 31 '09 19:12

Mike2012


5 Answers

Would something as simple as SLEEP work?

like image 148
Xach Avatar answered Nov 02 '22 07:11

Xach


http://www.cliki.net/TIMER implements relative time based scheduling, which i THINK is what you mean

like image 38
bigjust Avatar answered Nov 02 '22 07:11

bigjust


It's SBCL-dependent, but you might want to try out Zach Beane's TIMER.

like image 4
jkndrkn Avatar answered Nov 02 '22 08:11

jkndrkn


With SBCL: make-timer and schedule-timer

SBCL has built-in functions for this.

SBCL supports a system-wide event scheduler implemented on top of setitimer that also works with threads but does not require a separate scheduler thread.

This examples executes a function after 2 seconds:

(schedule-timer (make-timer (lambda ()
                              (write-line "Hello, world")
                              (force-output)))
                2)

Among other methods we have unschedule-timer and list-all-timers.

Xach Bean's timer dates from 2003. It is possible these SBCL methods are more recent.

With Clerk, "a cron-like scheduler with a sane DSL"

With the Clerk library, we can run regular jobs:

(job "Say 'Hi' all the time" every 5.seconds (print "Hi"))

This will run every 5 seconds. Without "every" it would be a one-time job:

(job "Extraordinary event" in 5.days (send-mail "Don't forget X"))

where we can use any word instead of "in".

See also

I also encountered but didn't try https://github.com/Shinmera/simple-tasks

like image 3
Ehvince Avatar answered Nov 02 '22 07:11

Ehvince


You could use CL's SLEEP, unless you need more precise timing (since SLEEP is permitted to use approximate timing.)

In LispWorks, if more precise timing is needed, one could use LispWorks' timer scheduling interface.

Note that, same as Zach Beane's TIMER, this is not implementation-agnostic.

like image 1
gsl Avatar answered Nov 02 '22 06:11

gsl