https://github.com/go-god/wrap
wrap go goroutine run.
https://github.com/go-god/wrap
go goroutine waitgroup wrap wrapper
Last synced: about 1 month ago
JSON representation
wrap go goroutine run.
- Host: GitHub
- URL: https://github.com/go-god/wrap
- Owner: go-god
- License: mit
- Created: 2022-09-17T09:18:24.000Z (almost 4 years ago)
- Default Branch: main
- Last Pushed: 2022-09-19T14:32:50.000Z (almost 4 years ago)
- Last Synced: 2026-05-24T03:33:41.391Z (about 1 month ago)
- Topics: go, goroutine, waitgroup, wrap, wrapper
- Language: Go
- Homepage: https://pkg.go.dev/github.com/go-god/wrap
- Size: 9.77 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# wrap
- wrap go `sync.WaitGroup` processing goroutine
- wrap go `chan` processing goroutine
# why wrap
- Wrap the go `sync.WaitGroup` so that you don't sometimes forget to write `defer wg.Add(1)` before the business layer writes go func, or `defer wg.Done()` when it's Done.
- By wrapping it, you can ensure that the Go Goroutine executes successfully.
# example
```go
package main
import (
"log"
"github.com/go-god/wrap"
)
func main() {
// through wg to exec goroutine
var wg = wrap.New()
wg.Wrap(func() {
log.Println("this is test")
})
for i := 0; i < 10; i++ {
num := i
// wrap go goroutine without recovery func
wg.Wrap(func() {
log.Println("current index:", num)
})
}
wg.WrapWithRecovery(func() {
log.Println("exec goroutine with recovery func")
var s = []string{"a", "b", "c"}
log.Printf("s[3] = %v", s[3])
}, func(r interface{}) {
// exec recover:runtime error: index out of range [3] with length 3
log.Printf("exec recover:%v", r)
})
wg.Wait()
// through chan to exec goroutine
w := wrap.NewChanWrapper(2)
w.Wrap(func() {
log.Println("this is test")
})
w.WrapWithRecovery(func() {
log.Println("exec goroutine with recovery func")
var s = []string{"a", "b", "c"}
log.Printf("s[3] = %v", s[3])
}, func(r interface{}) {
// exec recover:runtime error: index out of range [3] with length 3
log.Printf("exec recover:%v", r)
})
w.Wait()
}
```