2025-04-04 20:44:57 +02:00

26 lines
382 B
Go

package solution
import "time"
type RateLimiter struct {
ticker *time.Ticker
}
func NewRateLimiter(n int) *RateLimiter {
limit := time.Second / time.Duration(n)
return &RateLimiter{ticker: time.NewTicker(limit)}
}
func (r *RateLimiter) CanTake() bool {
select {
case <-r.ticker.C:
return true
default:
return false
}
}
func (r *RateLimiter) Take() {
<-r.ticker.C
}