首页 > 其他 > 详细

13.go内置的rate包学习1

时间:2019-12-22 23:51:22      阅读:101      评论:0      收藏:0      [点我收藏+]

技术分享图片

技术分享图片

技术分享图片

技术分享图片

package main

import (
    "context"
    "fmt"
    "golang.org/x/time/rate"
    "log"
    "time"
)

func main() {
    r := rate.NewLimiter(1, 5) //1表示每次放进筒内的数量,桶内的令牌数是5,最大令牌数也是5,这个筒子是自动补充的,你只要取了令牌不管你取多少个,这里都会在每次取完后自动加1个进来,因为我们设置的是1
    ctx := context.Background()

    for {
        err := r.WaitN(ctx, 2)//每次消耗2个,因为之前放进去一个,所以桶里面只有一个,消耗完了还会放进去,所以这段代码再执行到第4次的时候筒里面就空了
        if err != nil {
            log.Fatal(err)
        }
        fmt.Println(time.Now().Format("2016-01-02 15:04:05"))
        time.Sleep(time.Second)
    }

}




13.go内置的rate包学习1

原文:https://www.cnblogs.com/hualou/p/12081458.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!