epoll
main 函数的过程就是首先创建一个监听套接字
main 函数的过程就是首先创建一个监听套接字,然后用一个 for 循环不断的从监听套接字上 Accept 新的连接,最后调用 echoFunc 函数在建立的连接上干活。关键代码是: 每收到一个新的连接,就创建一个“线程”去服务这个连接,因此所有的业务逻辑都可以同步、顺序的编写到echoFunc 函数中,再也不用去关心网络 IO 是否会阻塞的问题。不管业务多复杂,Go 语言的并发服务器的编程模型都是长这个样子
i/o多路复用这个概念被提出来以后
I/O多路复用这个概念被提出来以后, select是第一个实现 (1983 左右在BSD里面实现)。其函数原型如下: 该函数第一个参数表明我们要监听的文件描述符的最大值,中间的三个参数?readfds writefds exceptfds指向描述符集最后一个参数是超时时间。 它所需要的fd_set类型其实是一个__FD_SETSIZE长度bit的数组
中文资料:
nio的类库和api繁杂,学习成本高
中文资料: NIO的类库和API繁杂,学习成本高,你需要熟练掌握 Selector、ServerSocketChannel、SocketChannel、ByteBuffer 等。 需要熟悉Java多线程编程。这是因为NIO编程涉及到Reactor模式,你必须对多线程和网络编程非常熟悉,才能写出高质量的 NIO 程序