go 定时器
package main import (
"fmt"
"time"
) func main() {
t := time.NewTicker(time.Second)
for v := range t.C {
fmt.Println("hello, ", v)
}
}
- 一次定时器(官方不建议使用time.After,推荐time.NewTimer)
package main import (
"fmt"
"time"
) func main() {
select {
case <- time.After(time.Second):
fmt.Println("after")
}
}
上面代码一秒后执行
- 超时控制
package main import (
"fmt"
"runtime"
"time"
) func main() {
num := runtime.NumCPU()
runtime.GOMAXPROCS(num - 1)
for i := 0; i < 16; i++ {
go func() {
for {
t := time.NewTicker(time.Second)
select {
case <-t.C:
fmt.Println("timeout")
}
t.Stop()
}
}()
} time.Sleep(time.Second * 100)
}
备注:使用定时器后,需要关闭,不关闭存在内存泄漏风险。