Next: , Previous: Threading, Up: Top


12 Timers

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

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

— Structure: sb-ext:timer

Class precedence list: timer, structure-object, t

Timer type. Do not rely on timers being structs as it may change in future versions.

— Function: sb-ext:make-timer function &key name thread

Create a timer object that's when scheduled runs function. If thread is a thread then that thread is to be interrupted with function. If thread is t then a new thread is created each timer function is run. If thread is nil then function can be run in any thread.

— Function: sb-ext:timer-name timer

Return the name of timer.

— Function: sb-ext:timer-scheduled-p timer &key delta

See if timer will still need to be triggered after delta seconds from now. For timers with a repeat interval it returns true.

— Function: sb-ext:schedule-timer timer time &key repeat-interval absolute-p

Schedule timer to be triggered at time. If absolute-p then time is universal time, but non-integral values are also allowed, else time is measured as the number of seconds from the current time. If repeat-interval is given, timer is automatically rescheduled upon expiry.

— Function: sb-ext:unschedule-timer timer

Cancel timer. Once this function returns it is guaranteed that timer shall not be triggered again and there are no unfinished triggers.

— Function: sb-ext:list-all-timers

Return a list of all timers in the system.