作者热门文章
- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我有一段代码,我们运行多个 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/
我正在尝试将 sed 脚本迁移到 Perl 单行脚本,因为 Perl 支持非贪婪正则表达式。我接受了 Non greedy (reluctant) regex matching in sed? 的建议
我正在使用动态多级哈希,从中读取数据但也写入数据。 对我来说一个常见的陷阱是访问不存在的键(错别字、数据库修订等)。我得到 undef s 传播到其他部分并导致问题。我要die每当我尝试读取一个不存在
我希望我的脚本 perl 在生成警告时死掉,包括由使用的包生成的警告。 例如,这应该死: use strict; use warnings; use Statistics::Descriptive;
我有一个内存密集型 celery 任务,我希望它在大部分时间都处于关闭状态的昂贵 AWS 服务器中运行。 celery 节拍将每天安排一次任务,但也可以通过网络应用程序(== django)手动安排。
我是一名优秀的程序员,十分优秀!