我做了一个游戏,它使用时间来计算重力对时间(速度和运动)的影响。虽然游戏主要使用r5rs函数,但我使用了thread、sleep和其他函数来更新和记忆时间,这些都是在球拍中定义的。现在我想让te游戏在一个只有r5rs的微控制器上工作。有没有可能只用r5rs就能做类似的事情?
这是我目前使用的代码(使用球拍函数):
(define (make-timer)
(define time 0)
(define wait-time (/ 1 CPU_FREQ))
(define timer-thread
(thread (lambda ()
(let loop ()
(sleep wait-time)
(set! time (+ 1 time))
(loop)))))
(define (dispatch msg)
(cond ((eq? msg 'time) time)
((eq? msg 'start)
(thread-resume timer-thread))
((eq? msg 'restart)
(set! time 0)
(thread-resume timer-thread))
((eq? msg 'reset)
(thread-suspend timer-thread)
(set! time 0))
((eq? msg 'stop) (thread-suspend timer-thread))
((eq? msg 'set-period!)
(lambda (period)
(set! wait-time (* (+ period 1) (/ 1 CPU_FREQ)))))
))
(thread-suspend timer-thread)
(set! time 0)
dispatch)发布于 2013-04-03 04:13:11
不,在R5RS中没有线程原语(请查看规范的index以查看可用的过程)。而且它不能仅用R5RS来实现,因为在某些情况下,您必须访问本机操作系统调用。
https://stackoverflow.com/questions/15773108
复制相似问题