你使用的是什么版本的 Go ( go version)?
go version
输出:
go 版本 go1.12.17 darwin/amd64
您使用的是什么版本的软件包(rate version)?
golang.org/x/time v0.0.0-20190308202827-9d24e82272b4
你做了什么?
在 amd64 上运行以下命令:
package main
import (
"fmt"
"golang.org/x/time/rate"
"sync"
"sync/atomic"
"time"
)
func main() {
now := time.Now()
t := time.After(time.Second)
limit := rate.Limit(100)
burst := 10
l := rate.NewLimiter(limit, burst)
var count int
for {
select {
case <-t:
fmt.Printf("%ds, %d\n", time.Now().Sub(now).Nanoseconds()/1e9, count)
return
default:
if l.Allow() {
count++
}
}
}
}
你期待看到什么?
1s, 10
你看到了什么?
1s, 110
我很困惑count不等于突发大小。当我设置 Limit=100,burst=10 时,它应该允许()最大调用是突发的。
慕婉清6462132
相关分类