Is there a Racket/Scheme equivalent of ualarm?
i.e. how can one set a system timer in Racket?
如果您希望某些操作在毫秒后异步发生time-to-wait
,您可以使用alarm-evt
,如下所示:
(thread
(lambda ()
(sync (alarm-evt (+ (current-inexact-milliseconds) time-to-wait)))
.... do something here ....))
不过,根据您的操作,Óscar 的答案 ( timer%
) 可能更方便。
不完全一样ualarm
(这不是系统调用!),但也许你可以timer%
用来做你想做的事:
一个
timer%
对象封装了一个基于事件的警报。要使用计时器,请使用timer-callback
thunk 实例化它以执行基于警报的操作,或者派生一个新类并覆盖该notify
方法以执行基于警报的操作。用 启动计时器,用start
停止它stop
。interval
创建计时器时提供初始值(以毫秒为单位)也会启动计时器。