runnergroup
runnergroup copied to clipboard
RunnerGroup is like sync.WaitGroup, the diffrence is if one task stops, all will be stopped.
RunnerGroup
RunnerGroup is like sync.WaitGroup, the diffrence is if one task stops, all will be stopped.
❤️ A project by txthinking.com
Install
$ go get github.com/txthinking/runnergroup
Example
import (
"context"
"log"
"net/http"
"time"
"github.com/txthinking/runnergroup"
)
func Example() {
g := runnergroup.New()
s := &http.Server{
Addr: ":9991",
}
g.Add(&runnergroup.Runner{
Start: func() error {
return s.ListenAndServe()
},
Stop: func() error {
return s.Shutdown(context.Background())
},
})
s1 := &http.Server{
Addr: ":9992",
}
g.Add(&runnergroup.Runner{
Start: func() error {
return s1.ListenAndServe()
},
Stop: func() error {
return s1.Shutdown(context.Background())
},
})
go func() {
time.Sleep(5 * time.Second)
log.Println(g.Done())
}()
log.Println(g.Wait())
// Output:
}
License
Licensed under The MIT License