是否可以直接执行Socket::StartWrite里的KeepWrite?
xybanpeng opened this issue · comments
如果直接在当前bthread执行KeepWrite,可能会阻塞异步rpc的CallMethod调用。
这样也会影响服务端异步rpc响应吧。Socket::StartWrite里直接调用KeepWrite,会导致Write阻塞,不太合理吧。
加个参数,支持使用bthread_start_urgent原地执行KeepWrite,应该能满足需求。
这样也会影响服务端异步rpc响应吧。Socket::StartWrite里直接调用KeepWrite,会导致Write阻塞,不太合理吧。
加个参数,支持使用bthread_start_urgent原地执行KeepWrite,应该能满足需求。
当前请求的response已经返回了,client端应该是已经结束了。Write阻塞指的是什么?
单纯从Socket::Write接口看就是有可能会阻塞吧。
单纯从Socket::Write接口看就是有可能会阻塞吧。
只有baidu_rpc_protocol.cpp SendRpcResponse调用Socket::Write的时候才会在执行完之后去处理队列里的消息,默认都是使用bthread_start_background
用bthread_start_urgent效果差不多,但是影响更小?
用bthread_start_urgent效果差不多,但是影响更小?
效果应该差不多
@xybanpeng 可以使用 #2591 测试一下优化效果