| package common |
|
|
| import ( |
| "context" |
| "fmt" |
| "math" |
|
|
| "github.com/bytedance/gopkg/util/gopool" |
| ) |
|
|
| var relayGoPool gopool.Pool |
|
|
| func init() { |
| relayGoPool = gopool.NewPool("gopool.RelayPool", math.MaxInt32, gopool.NewConfig()) |
| relayGoPool.SetPanicHandler(func(ctx context.Context, i interface{}) { |
| if stopChan, ok := ctx.Value("stop_chan").(chan bool); ok { |
| SafeSendBool(stopChan, true) |
| } |
| SysError(fmt.Sprintf("panic in gopool.RelayPool: %v", i)) |
| }) |
| } |
|
|
| func RelayCtxGo(ctx context.Context, f func()) { |
| relayGoPool.CtxGo(ctx, f) |
| } |
|
|