- Run functions in parallel.
- Limit the number of goroutines running at the same time.
go get -u github.com/rafaeljesus/parallel-fn
package main
import (
"errors"
"github.com/rafaeljesus/parallel-fn"
)
func main() {
timeout := time.After(2 * time.Second)
fn1 := func() error { return nil }
fn2 := func() error { return errors.New("BOOM!") }
for {
select {
case err := <-Run(fn1, fn2):
// catch errors
case <-timeout:
// handle timeout
}
}
}
package main
import (
"errors"
"github.com/rafaeljesus/parallel-fn"
)
func main() {
timeout := time.After(2 * time.Second)
fn1 := func() error { return nil }
fn2 := func() error { return errors.New("BOOM!") }
fn3 := func() error { nil }
fn4 := func() error { nil }
for {
select {
case err := <-RunLimit(2, fn1, fn2, fn3, fn4):
// catch errors
case <-timeout:
// handle timeout
}
}
}
- Fork it
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Add some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create new Pull Request
GitHub @rafaeljesus Β Β·Β Medium @_jesus_rafael Β Β·Β Twitter @_jesus_rafael