phxrpc
phxrpc copied to clipboard
epoll_wait的最后参数为什么是4MS ?
如题,不应该通过计算定期或者超时事件最小触发时间而动态进行设置吗? 无就绪事件而有定时器来时,4ms会有延迟处理; 无就绪事件也无定时器来时,4MS触发的往下执行没有必要。
https://github.com/Tencent/phxrpc/issues/31#issuecomment-340964431
可以参考这个comment。
无就绪事件的情况下,即使timeout参数填0,也会等待4ms左右,所以4ms是可填的最小的参数。
为什么timeout参数要填最小的?是因为随时有就绪的resp需要通过active_socket_func_
回传给client,在吞吐低的时候,要通过EpollNotifier
避免epoll_wait
最长时长为timeout
的卡顿;但吞吐的高低是有统计周期的,例如从高变低的过程中,EpollNotifier
不能及时被触发,时长为timeout
的卡顿还是会发生,所以timeout
越小越好。