代码拉取完成,页面将自动刷新
package coroutine
import (
"context"
"gitee.com/quant1x/gox/logger"
"gitee.com/quant1x/gox/signal"
"sync"
)
var (
globalOnce sync.Once
globalContext context.Context = nil
globalCancel context.CancelFunc = nil
)
func initContext() {
globalContext, globalCancel = context.WithCancel(context.Background())
}
// Context 获取全局顶层context
func Context() context.Context {
globalOnce.Do(initContext)
return globalContext
}
// Shutdown 关闭应用程序, 通知所有协程退出
func Shutdown() {
globalOnce.Do(initContext)
if globalCancel != nil {
globalCancel()
}
}
func GetContextWithCancel() (context.Context, context.CancelFunc) {
globalOnce.Do(initContext)
ctx, cancel := context.WithCancel(globalContext)
return ctx, cancel
}
// WaitForShutdown 阻塞等待关闭信号
func WaitForShutdown() {
globalOnce.Do(initContext)
interrupt := signal.Notify()
select {
case <-globalContext.Done():
logger.Infof("application shutdown...")
globalCancel()
break
case sig := <-interrupt:
logger.Infof("interrupt: %s", sig.String())
globalCancel()
break
}
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。