66 lines
1.2 KiB
Markdown
Raw Permalink Normal View History

2021-12-04 16:42:11 +00:00
## RunnerGroup
[![GoDoc](https://img.shields.io/badge/Go-Doc-blue.svg)](https://godoc.org/github.com/txthinking/runnergroup)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://github.com/txthinking/runnergroup/blob/master/LICENSE)
RunnerGroup is like [sync.WaitGroup](https://pkg.go.dev/sync?tab=doc#WaitGroup), the diffrence is if one task stops, all will be stopped.
❤️ A project by [txthinking.com](https://www.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