throttle
Throttle is an object that will perform exactly one action per duration
About throttle
Throttle
Throttle is an object that will perform exactly one action per duration. Do call the function f if a specified duration has passed since the last function f was called for this instance of Throttle.
Examples
single thread
package main
import (
"fmt"
"time"
"github.com/yudppp/throttle"
)
func main() {
throttler := throttle.New(time.Second)
throttler.Do(func() {
fmt.Println("first call")
})
throttler.Do(func() {
// this function called never.
fmt.Println("second call")
})
time.Sleep(time.Second)
throttler.Do(func() {
fmt.Println("third call")
})
time.Sleep(time.Second)
}
$ go run -race main.go
first call
third call
multiple threads
package main
import (
"fmt"
"time"
"github.com/yudppp/throttle"
)
func main() {
throttler := throttle.New(time.Second)
var wg sync.WaitGroup
for i := 0; i < 64; i++ {
wg.Add(1)
go func(i int) {
throttler.Do(func() {
fmt.Println("called")
})
wg.Done()
}(i)
}
wg.Wait()
}
$ go run -race main.go
called
License
Frequently Asked Questions
What is throttle?
throttle is a Utilities library for the Go programming language. Throttle is an object that will perform exactly one action per duration
How do I install throttle?
Install throttle with the Go module system using `go get yudppp/throttle`. Check the repository for the current installation instructions.
What category does throttle belong to?
throttle is listed under Utilities, specifically Utilities.