mirror of
https://github.com/duanhf2012/origin.git
synced 2026-02-03 22:45:13 +08:00
优化自恢复开协程函数GoRecover
This commit is contained in:
@@ -2,6 +2,7 @@ package coroutine
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"github.com/duanhf2012/origin/log"
|
||||||
"reflect"
|
"reflect"
|
||||||
"runtime/debug"
|
"runtime/debug"
|
||||||
)
|
)
|
||||||
@@ -12,10 +13,11 @@ func F(callback interface{},recoverNum int, args ...interface{}) {
|
|||||||
var coreInfo string
|
var coreInfo string
|
||||||
coreInfo = string(debug.Stack())
|
coreInfo = string(debug.Stack())
|
||||||
coreInfo += "\n" + fmt.Sprintf("Core information is %v\n", r)
|
coreInfo += "\n" + fmt.Sprintf("Core information is %v\n", r)
|
||||||
fmt.Print(coreInfo)
|
log.SError(coreInfo)
|
||||||
|
if recoverNum > 0{
|
||||||
if recoverNum==-1 ||recoverNum-1 >= 0 {
|
|
||||||
recoverNum -= 1
|
recoverNum -= 1
|
||||||
|
}
|
||||||
|
if recoverNum == -1 || recoverNum > 0 {
|
||||||
go F(callback,recoverNum, args...)
|
go F(callback,recoverNum, args...)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user