这一章我们将看一下Go的网络模块。Go在网络编程方面提倡的做法是,每来一个连接就开一个goroutine去处理。非常的用户友好,不用学习一些反人类的网络编程模式,并且性能是有保障的。这些都得益于Go的网络模块的实现。
由于goroutine的实现非常轻量,很容易就可以开很多的goroutine,这为每条连接分配一个goroutine打好了基础。Go对网络的处理,在用户层是阻塞的,实现层是非阻塞的。这一章里我们将研究Go是如何封装好epoll/kqueue,为用户提供友好的阻塞式接口的。
另一方面,我们也会看一下Go是的网络层的一些api是如何优雅进行封装的。