您的位置 首页 golang

Golang并发编程,常用的3种延迟操作,你可不能只会time.sleep

1、time.Sleep的作用是程序阻塞,延迟操作。

 func func1() {
fmt.Println(time.Now().Format("2006-01-02 15:04:05"))
time.Sleep(time.Second * 2)
fmt.Println(time.Now().Format("2006-01-02 15:04:05"))
}  

2、time.NewTimer 定义定时器 ,程序阻塞,延迟操作。

time.NewTimer的原理是:

(1)提供一个channel;

(2)在定时时间到达之前,没有数据写入timer.C会一直阻塞;

(3)当定时时间到了,向channel写入值,阻塞解除;

(4)之后也可以从中读取数据。

 func func2() {
fmt.Println(time.Now().Format("2006-01-02 15:04:05"))
timer := time.NewTimer(time.Second * 3)
t := <-timer.C
fmt.Println(t)
}  

3、time.After的原理与time.NewTimer相似,作用也是程序阻塞,延迟操作。

 func func3() {
fmt.Println(time.Now().Format("2006-01-02 15:04:05"))
<-time.After(time.Second * 2)
fmt.Println(time.Now().Format("2006-01-02 15:04:05"))
}  

文章来源:智云一二三科技

文章标题:Golang并发编程,常用的3种延迟操作,你可不能只会time.sleep

文章地址:https://www.zhihuclub.com/86964.shtml

关于作者: 智云科技

热门文章

网站地图