handler里下面代码为什么要go出去 ,然后for里面监听响应?,这样频繁创建销毁很多资源会不会影响性能
```
// 启动流控,目的方->请求方 s2cErrChan := s.forwardServerToClient(serverStream, clientStream)
// 启动流控,请求方->目的方 c2sErrChan := s.forwardClientToServer(clientStream, serverStream)
```
如果不是streaming请求,只有unary请求,是否可以这样同步等待。感觉这样性能会好一点。求解惑❗️
```
func forwardAndResponse(client grpc.ClientStream, server grpc.ServerStream) (resp *frame, err error) {
f := &frame{}
if err = server.RecvMsg(f); err != nil {
return
}
if err := client.SendMsg(f); err != nil {
return
}
md, err := client.Header()
if err != nil {
return
}
if err := server.SendHeader(md); err != nil {
return
}
if err := client.RecvMsg(f); err != nil {
return
}
if err := server.SendMsg(f); err != nil {
return
}
return f, nil
}
```
相似问题