在下面的示例中将上下文传递给 Wait() 函数的目的是什么?
假设有一个限制器允许每秒 3 个请求。
这是否意味着限制器不会成为共享资源,对于每个“进程”函数调用,它都会有自己的限制器实例和范围,对吗?如果不是这样呢?我怎样才能实现它?
结构体
type MyClass struct {
limiter *rate.Limiter
}
func NewMyClass() (*MyClass, error) {
return &MyClass{limiter: rate.NewLimiter(rate.Limit(3), 1)}, nil
}
func (m *MyClass) Process(ctx context.Context) error {
err := m.limiter.Wait(ctx)
if err != nil {
return err
}
//more code
}
例子
m, _ := s3Storage.NewMyClass()
ctx1 := context.TODO()
m.Process(ctx1)
m.Process(ctx1)
m.Process(ctx1)
ctx2 := context.TODO()
m.Process(ctx2)
蓝山帝景
慕哥6287543
相关分类