ServerAsyncReaderWriter.Write 不是执行 tcp_write 的异步

ServerAsyncReaderWriter.Write is not async which performs tcp_write

grpc 版本 1.26.0

语言:c++

os: 分os 7

作为异步 bidi 流媒体服务器,我希望 ServerAsyncReaderWriter::Write 是异步的,实际工作(比如 tcp_write/flush)将在后台 mos 完成(可能是默认设置)执行人)。

但实际上,perf(perf record -F 99 -p xx -g -- sleep 90)显示ServerAsyncReaderWriter::Write直接调用tcp_write,默认执行器是almos一直闲着

沿着 ServerAsyncReaderWriter::Write -> Call::PerformOps -> Server::PerformOpsOnCall -> CallOpSet::FillOps -> grpc_call_start_batch -> ~ExecCtx -> ExecCtx::Flush -> grpc_combiner_continue_exec_ctx, 我找不到任何机会把工作交给别人...

这是设计使然,还是出了什么问题?

这看起来像预期的那样工作。 gRPC C++ 尝试尽可能多地使用给定的线程。它仅在必要时才使用其他线程。