epoll_wait 返回事件的类型判断处理疑问?
stormzy opened this issue · 2 comments
stormzy commented
Barenboim commented
你好。难得有用户看得这么仔细。为了性能考虑我们的poller_node是一个以fd为下标的数组,而每个node只能关注一种事件,READ或WRITE。所有我们需要通过operation来判断调用哪个处理函数,而不能通过event来判断。
也就是说,对于一个fd,在poller里是单工的。如果需要全双工,方法是通过系统调用dup()产生一个新的fd再加进来。我们现在准备用来做websocket的代码就是这样实现的。一个fd占用的系统资源非常小,而且只有当同步写不能将数据全部写入时,才需要再产生一个fd进行异步写。
stormzy commented
明白了,感谢耐心解答。 长知识长知识啦。也了解了一种新的思路。谢谢谢谢。