有没有可能在不惊慌的情况下中断goroutine?

有没有可能在不惊慌的情况下中断goroutine?,go,Go,我正在设置一个服务,提供http服务器并运行goroutine来处理一些任务,看看代码 在一个周期中,一个子作业看起来像是中断,在一次func调用后没有日志 它没有捕获任何恐慌错误,延迟似乎没有触发,因为互斥锁没有解锁 日志不会中断或丢失 其他作业的日志已完成 在这些时间里没有重新启动、退出或终止 这是为了CentOS 7.5,我的服务在docker中运行 go1.11 docker 18.09 这是一个偶然的错误,我添加了更多日志并打开了pprof,并试图重现这个错误 梅因,加油 func m

我正在设置一个服务,提供http服务器并运行goroutine来处理一些任务,看看代码

在一个周期中,一个子作业看起来像是中断,在一次func调用后没有日志

它没有捕获任何恐慌错误,延迟似乎没有触发,因为互斥锁没有解锁

日志不会中断或丢失 其他作业的日志已完成 在这些时间里没有重新启动、退出或终止

这是为了CentOS 7.5,我的服务在docker中运行

go1.11 docker 18.09

这是一个偶然的错误,我添加了更多日志并打开了pprof,并试图重现这个错误

梅因,加油

func main(){
....
//这是一个循环作业,具有自定义的时间间隔
循环(r)
....
无尽的.listendServe(“:”+conf.conf.Port,r)
}
路由器/cycle.go

//这是一个循环作业,当作业结束时,休眠自定义时间间隔并再次运行
//通过封装goroutine实现,并创建上下文
功能循环(g*gin.发动机){
cyclec:=cli.InitCycle(g)
cyclec.AddFunc(time.Second,schedule.RunSomeDeal)
cyclec.Start()
}
///小生意
func RunSomeDeal(c*gin.Context)错误{
...
//处理一些子任务
对于i:=0;iconst size=64当另一个goroutine在该线程上运行时,它可以像挂起一样被中断,但它不会退出。goroutine是使用
go x()调用的函数
;就像任何其他函数调用一样,它在崩溃或返回之前不会停止。您可能存在锁争用问题或类似问题-当您认为例程挂起时,请向应用程序发送一个
SIGQUIT
,以获取所有正在运行的goroutine的堆栈跟踪,这应有助于找到问题所在。如果您有测试,请尝试r使用race detector运行它。go test-race。/…您不需要测试套件来检查race detection
go build-race
go run-race
也可以工作。当另一个goroutine在该线程上运行时,它可以作为挂起中断,但不会退出。goroutine是使用
go x()调用的函数
;就像任何其他函数调用一样,它在崩溃或返回之前不会停止。您可能存在锁争用问题或类似问题-当您认为例程挂起时,请向应用程序发送一个
SIGQUIT
,以获取所有正在运行的goroutine的堆栈跟踪,这应有助于找到问题所在。如果您有测试,请尝试r使用比赛检测器运行它。进行测试-比赛。/…您不需要测试套件来检查比赛检测
go build-race
go run-race
也可以工作。