go语言——time.After的使用

初学GO,time包里sleep是最常用,今天突然看到一个time.after,特记录time.after用法笔记如下:

首先是time包里的定义:

//After waits for the duration to elapse and then sends the current time on the returned channel. 
//It is equivalent to NewTimer(d).C. The underlying Timer is not recovered by the garbage
//collector until the timer fires. If efficiency is a concern, use NewTimer instead and
//call Timer.Stop if the timer is no longer needed.

翻译:After等待持续时间过去,然后在返回的通道上发送当前时间。它等效于NewTimer(d).C。在计时器触发之前,底层的计时器不会由垃圾收集器恢复。如果需要提高效率,请改用NewTimer,如果不再需要计时器,则调用Timer.Stop

函数原型:func After(d Duration) <-chan Time

解析:该函数调用后返回一个chan Time类型,当执行d时间段,返回一个当前时间到该chan中。通过select机制配合超时机制,来对创建的协程管理。

实例:

package main

import (
    "fmt"
    "time"
)

var c chan int

func handle(int) {}

func main() {
    select {
    case m := <-c:
        handle(m)
    case <-time.After(10 * time.Second):
        fmt.Println("timed out")
    }
}

 

 

posted @ 2020-07-30 23:27  Single_Dont  阅读(1301)  评论(0编辑  收藏  举报