我正在嘗試使用https://github.com/klkblake/Go-SDL編寫SDL應用程序。
我創建的計時器來調用它繪製函數:選擇的奇怪行爲(不允許其他goroutines運行)
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")
在
的默認分支
選擇 - 代碼開始工作,我希望它(畫東西的窗口);如果我刪除println它再次不繪製任何東西。
我在做什麼錯?爲什麼有這樣的行爲選擇?
唔...最簡單的測試用例是:
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
}
}