1.优化网络库

2.rpc协议在宕机时不会导致整个rpc无法响应
This commit is contained in:
boyce
2020-02-05 17:51:51 +08:00
parent 29b04d82c3
commit 7fd97033ec
5 changed files with 28 additions and 7 deletions

View File

@@ -6,7 +6,7 @@ import (
"runtime/debug"
)
func F(callback interface{}, args ...interface{}) {
func F(callback interface{},recoverNum int, args ...interface{}) {
defer func() {
if r := recover(); r != nil {
var coreInfo string
@@ -17,6 +17,11 @@ func F(callback interface{}, args ...interface{}) {
} else {
fmt.Print(coreInfo)
}
if recoverNum==-1 ||recoverNum-1 >= 0 {
recoverNum -= 1
go F(callback,recoverNum, args...)
}
}
}()
@@ -33,5 +38,10 @@ func F(callback interface{}, args ...interface{}) {
}
func Go(callback interface{}, args ...interface{}) {
go F(callback, args...)
go F(callback,0, args...)
}
//-1表示一直恢复
func GoRecover(callback interface{},recoverNum int, args ...interface{}) {
go F(callback,recoverNum, args...)
}