接口介绍
type Limiter
type Limiter struct {
// contains filtered or unexported fields
}
Limter限制时间的发生频率,采用令牌池的算法实现。这个池子一开始容量为b,装满b个令牌,然后每秒往里面填充r个令牌。
由于令牌池中最多有b个令牌,所以一次最多只能允许b个事件发生,一个事件花费掉一个令牌。
Limter提供三中主要的函数 Allow, Reserve, and Wait. 大部分时候使用Wait。
func NewLimiter
func NewLimiter(r Limit, b int) *Limiter
NewLimiter 返回一个新的Limiter。
func (*Limiter) [Allow]
func (lim *Limiter) Allow() bool
Allow 是函数 AllowN(time.Now(), 1)的简化函数。
func (*Limiter) AllowN
func (lim *Limiter) AllowN(now time.Time, n int) bool
AllowN标识在时间now的时候,n个事件是否可以同时发生(也意思就是now的时候是否可以从令牌池中取n个令牌)。如果你需要在事件超出频率的时候丢弃或跳过事件,就使用AllowN,否则使用Reserve或Wait.
func (*Limiter) Reserve
func (lim *Limiter) R