gpt4 book ai didi

go - 如何计算死掉的例程?

转载 作者:数据小太阳 更新时间:2023-10-29 03:46:31 26 4
gpt4 key购买 nike

我有一段代码,我们运行多个 go 例程来接收值。我试图统计有多少 go routines 由于某些异常或错误而死亡。我不想更新正常执行的计数。

  for {
go func(){
err := receiveValues()

}()
}

这里,receiveValues会调用其他函数,如果失败则返回err

func recieveValues() error{
if err, val := callSomeFunc(); err != nil{
return err
}

if err2, val2 := callOtherFunc(val); err2 != nil{
return err2
}
}

我可以检查 receiveValues() 何时返回错误并增加我的计数,但我也想在 go 例程由于一些我没有预料到的 panic 或错误而退出时增加我的计数,什么是万无一失的方法跟踪有多少 go routines 已经死亡?

最佳答案

使用将从 panic 中恢复的延迟函数。

func count() {
err := recover()
if err != nil {
// count error
} else {
// count no error
}
}

func trap() {
defer count()
if rand.Intn(2) >= 1 {
panic("bad luck")
}
}

关于go - 如何计算死掉的例程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49265533/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com