Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Timer 公共Lisp定时器_Timer_Common Lisp - Fatal编程技术网

Timer 公共Lisp定时器

Timer 公共Lisp定时器,timer,common-lisp,Timer,Common Lisp,我想在我的公共lisp应用程序中启动一个计时器,在一段时间后它将调用一个特定的方法。实现这一目标的最佳方式是什么 实现基于时间的相对调度,我认为这是你的意思,这取决于时间,但你可能想试试Zach Beane的。像工作一样简单吗?你可以使用CL的睡眠,除非你需要更精确的时间(因为睡眠可以使用近似的时间) 在LispWorks中,如果需要更精确的计时,可以使用 请注意,与Zach Beane的计时器一样,这不是实现不可知的。对于SBCL:make TIMER和schedule TIMER SBCL为

我想在我的公共lisp应用程序中启动一个计时器,在一段时间后它将调用一个特定的方法。实现这一目标的最佳方式是什么

实现基于时间的相对调度,我认为这是你的意思,这取决于时间,但你可能想试试Zach Beane的。

像工作一样简单吗?

你可以使用CL的睡眠,除非你需要更精确的时间(因为睡眠可以使用近似的时间)

在LispWorks中,如果需要更精确的计时,可以使用

请注意,与Zach Beane的计时器一样,这不是实现不可知的。

对于SBCL:
make TIMER
schedule TIMER
SBCL为此具有内置功能

SBCL支持在setitimer之上实现的系统范围的事件调度器,该调度器也可以与线程一起工作,但不需要单独的调度器线程

此示例在2秒后执行函数:

(schedule-timer (make-timer (lambda ()
                              (write-line "Hello, world")
                              (force-output)))
                2)
在其他方法中,我们有
非计划计时器
列出所有计时器

XachBean的计时器可以追溯到2003年。这些SBCL方法可能是最新的

对于Clerk,“一个具有健全DSL的类似cron的调度器” 使用该库,我们可以运行常规作业:

(job "Say 'Hi' all the time" every 5.seconds (print "Hi"))
这将每5秒运行一次。如果没有“每一个”,这将是一项一次性工作:

(job "Extraordinary event" in 5.days (send-mail "Don't forget X"))
我们可以用任何词来代替“in”

另见
我也遇到了,但没有尝试

只是注意到,这指向了Xach的链接,正如JKNRKN的答案一样。@Frankshearr,不管出于什么原因,这个答案(两分钟前发布)少了一张选票。也许人们喜欢另一个答案中的格式和属性。