我正在尝试使用https://github.com/klkblake/Go-SDL编写SDL应用程序。
我创建了计时器来调用绘制函数:
render_timer := time.NewTicker(time.Second / 60)
事件循环中的某处:
for running == true {
[...]
[process sdl events]
[...]
select {
case <-render_timer.C:
call_my_draw_function()
default:
some_default_actions()
}
[...]
}
如果我在编译此代码后运行程序,则屏幕上不会显示任何内容。但是,如果我只放置:
fmt.Println("default")
在select的默认分支中-代码开始按我想要的方式工作(在窗口中绘制内容);如果我再次删除println,则不会绘制任何内容。 我究竟做错了什么?为什么会有select的这种行为?
嗯...最简单的测试用例是:
package main
import (
"fmt"
"time"
)
func main() {
rt := time.NewTicker(time.Second / 60)
for {
select {
case <-rt.C:
fmt.Println("time")
default:
}
time.Sleep(1) // without this line 'case <-rt.C' is never executed
}
}
一只名叫tom的猫
白衣染霜花
相关分类