码迷,mamicode.com
首页 > 其他好文 > 详细

Go计时器

时间:2020-02-03 09:42:42      阅读:88      评论:0      收藏:0      [点我收藏+]

标签:after   ret   一个   时间   highlight   port   turn   创建   结束   

1. NewTimer

package main

import (
	"time"
	"fmt"
)

func main() {
	/*
	1. func NewTimer(d Duration) *Timer
			创建一个计时器,d时间以后触发
	 */

	timer := time.NewTimer(3 *time.Second) //3秒
	fmt.Printf("%T\n",timer) //*time.Timer
	fmt.Println(time.Now()) //2019-08-15 11:32:17.065452 +0800 CST m=+0.000614404

	//此处等待channel中的数值,会阻塞3秒
	ch2 := timer.C
	//3秒之后的时间
	fmt.Println(<-ch2 ) //2019-08-15 11:32:20.068101 +0800 CST m=+3.003327715


	//新建一个计时器
	timer2 := time.NewTimer(5*time.Second)
	//开始goroutine,来处理触发后的事件
	go func() {
		<- timer2.C
		//5秒之后打印下面的
		fmt.Println("Timer 2 结束了。。。开始。。。。")
	}()
	
	//取消计时器
	time.Sleep(3*time.Second)
	flag := timer2.Stop()
	if flag{
		fmt.Println("Timer 2 停止了。。。")
	}
}

2. After

package main

import (
	"time"
	"fmt"
)

func main() {
	/*
	 2. func After(d Duration) <-chan Time
			返回一个通道:chan,存储的是d时间间隔之后的当前时间

		相当于:return NewTimer(d).C
	 */
	ch :=  time.After(3 *time.Second)
	fmt.Printf("%T\n",ch) //<-chan time.Time
	fmt.Println(time.Now()) //2019-08-15 11:43:33.941039 +0800 CST m=+0.000537462


	time2 := <-ch
	fmt.Println(time2) //2019-08-15 11:43:36.945775 +0800 CST m=+3.005338577
}

  

Go计时器

标签:after   ret   一个   时间   highlight   port   turn   创建   结束   

原文地址:https://www.cnblogs.com/yzg-14/p/12254565.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!