go 获取 net.conn fd 反射和非反射
非反射获取 根据conn类型,将conn断言成相应conn对象,在使用File方法获取file对象,至于为什么是file,参考unix、linux设计哲学:万物皆文件。拿到相应file后直接通过FD方法获取fd句柄。 ...
非反射获取 根据conn类型,将conn断言成相应conn对象,在使用File方法获取file对象,至于为什么是file,参考unix、linux设计哲学:万物皆文件。拿到相应file后直接通过FD方法获取fd句柄。 ...
原理 正常情况下,不使用epoll,每建立一个ws连接我们都会启一个goroutine来处理客户端发来的消息,如果客户端没有消息,这个goroutine就会阻塞在读消息的状态。有多少个连接就会有多少个goroutine,虽然goroutine比较轻量,但在大量连接的情况下还是比较耗费资源还是很大的。 使用epoll后会把所有ws连接的fd(文件描述符)放入一个epoll队列中,只启一个goroutine对epoll wait进行轮询获取缓冲区有内容的ws连接。这样就把之前要起n个goroutine变成了1个,随着连接数的增加性能的提升也会越来越明显。 ...