gotools/godoc/util/throttle.go

type Throttle

// NewThrottle creates a new Throttle with a throttle value r and
// a minimum allocated run time slice of dt:
//
//	r == 0: "empty" throttle; the goroutine is always sleeping
//	r == 1: full throttle; the goroutine is never sleeping
//
// A value of r == 0.6 throttles a goroutine such that it runs
// approx. 60% of the time, and sleeps approx. 40% of the time.
// Values of r < 0 or r > 1 are clamped down to values between 0 and 1.
// Values of dt < 0 are set to 0.
func NewThrottle(r float64, dt time.Duration) *Throttle {}

// Throttle calls time.Sleep such that over time the ratio tr/ts between
// accumulated run (tr) and sleep times (ts) approximates the value 1/(1-r)
// where r is the throttle value. Throttle returns immediately (w/o sleeping)
// if less than tm ns have passed since the last call to Throttle.
func (p *Throttle) Throttle() {}