Allenxuxu / gev

🚀Gev is a lightweight, fast non-blocking TCP network library / websocket server based on Reactor mode. Support custom protocols to quickly and easily build high-performance servers.
MIT License
1.72k stars 193 forks source link

事件处理顺序如何排序,这里的排序有什么讲究? #119

Closed ghost closed 2 years ago

ghost commented 2 years ago

@xuxiangyang var rEvents Event if ((events[i].Events & unix.POLLHUP) != 0) && ((events[i].Events & unix.POLLIN) == 0) { rEvents |= EventErr } if (events[i].Events&unix.EPOLLERR != 0) || (events[i].Events&unix.EPOLLOUT != 0) { rEvents |= EventWrite } if events[i].Events&(unix.EPOLLIN|unix.EPOLLPRI|unix.EPOLLRDHUP) != 0 { rEvents |= EventRead } @ @xuxiangyang

xuxiangyang commented 2 years ago

这个我当时调研了下,没特别看懂,主要是ws实现上有点理解困难。。。参考了 https://github.com/eranyanay/1m-go-websockets ,然后epoll 选择了 https://github.com/mailru/easygo/tree/master/netpoll 。如果你是和我一样对ws选型,这个方案也可以看看。

如果只是sdk使用问题,直接问作者会好点

ghost commented 2 years ago

websocket是应用层自己实现了,和我问的这个问题不相关。我问的问题是为什么epoll_wait处理事件顺序是这样的

Allenxuxu commented 2 years ago

就是先处理 err,再处理读写标志位的常规顺序啊

ghost commented 2 years ago

谢谢