Go语言 定时器 time.Tiker 笔记 | Konica 的自留地

Go语言 定时器 time.Tiker 笔记

Water, Water Splashes, High Speed, Paprika, Vegetables

time.Tiker 计时器

初次使用 Golang 标准库的 time 包的 定时器 time.Tiker 时, 死锁了,
在这里立个 flag, 贴出 time.Tiker 的正确使用方法.

示例

Go语言代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
package main
import (
"fmt"
"time"
)
func main() {
tiker := time.NewTicker(1 * time.Second)
c2 := make(chan struct{})
go func() {
time.Sleep(4e9) // 4s
c2 <- struct{}{}
}()
go func() {
time.Sleep(3e9) // 3s
tiker.Stop() //
}()
for_1:
for {
select {
case <-tiker.C:
fmt.Println(1)
case <-c2:
fmt.Println(2)
break for_1
}
}
}

运行结果:

1
1
1
2